博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-2421 Constructing Roads(最小生成树)
阅读量:6933 次
发布时间:2019-06-27

本文共 1193 字,大约阅读时间需要 3 分钟。

题目传送门:

题目大意:

要修公路,输入一个n,表示n个村庄。接着输入n*n的矩阵,该图的邻接矩阵,然后输入一个q 接下来的q行

每行包含两个数a,b,表示a、b这条边联通,就是已经有公路不用修了,要让所有村庄联通在一起问:修路最小代价?

分析:

根据题目输入构造邻接矩阵,然后把已经联通的村庄的距离设置为0,表示不用在修这条公路。在用新的邻接矩阵跑prim就可以了

代码:

#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;const int MAX=150;int n,map[MAX][MAX],q;int dist[MAX];bool vis[MAX];struct rood{ int st,en;}ro[MAX*(MAX+1)+10];int prim(){ for(int i=0;i<=n;i++) { dist[i]=INF; vis[i]=false; } dist[1]=0; int min,pos,ans=0; for(int i=1;i<=n;i++) { min=INF; for(int j=1;j<=n;j++) { if(!vis[j]&&min>dist[j]) { min=dist[j]; pos=j; } } vis[pos]=true; ans+=min; for(int j=1;j<=n;j++) { if(!vis[j]&&dist[j]>map[pos][j]) { dist[j]=map[pos][j]; } } } return ans;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); scanf("%d",&q); for(int i=0;i

 

转载于:https://www.cnblogs.com/LjwCarrot/p/9492237.html

你可能感兴趣的文章
监控目前所有连接SQL SERVER的用户信息
查看>>
代码中获得系统分区
查看>>
Java8读文件仅需一行代码
查看>>
[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
查看>>
《赋能》 读后感
查看>>
Fastq-dump:我的日常命令
查看>>
vlayout 1.2.20 发布,阿里 LayoutManager 定制化布局
查看>>
访中科曙光智能计算技术总监许涛:重新认识面向未来的AI服务器和云计算中心...
查看>>
.NET 调用c++库注意事项
查看>>
重磅发布: 阿里云WAF日志实时分析上线 (含视频)
查看>>
深度|10分钟读懂阿里巴巴高级专家在Flutter Live2018的分享
查看>>
大规模深度学习预测场景下 codegen 的思考与应用
查看>>
spring框架使用Quartz执行定时任务实例详解
查看>>
全链路跟踪系统设计与实践(转载)
查看>>
支付接口教程,详解支付宝接口(二)
查看>>
SourceTree 教程文档(了解界面)
查看>>
wpf 依赖属性和附加属性
查看>>
rocketMq-producer介绍
查看>>
谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
查看>>
Django搭建个人博客(二)
查看>>