HDU-1863-畅通工程(最小生成树,prim)
来源:互联网 发布:科比安东尼西决数据 编辑:程序博客网 时间:2024/05/17 05:12
畅通工程
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16722 Accepted Submission(s): 6987
Problem Description
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
Output
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
Sample Input
3 31 2 11 3 22 3 41 32 3 20 100
Sample Output
3?
最小生成树模板题,因为如果有n个村庄的话,若是能畅通,定有n-1条边将其联通以构成最小生成树,否则不畅通。
code:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn = 110;const int inf = 0x3f3f3f3f;int a[maxn][maxn],n,m;int dis[maxn];bool vis[maxn];void prim(){ int sum ; for(int i=1;i<=m;i++){ vis[i]=false; dis[i]=a[1][i]; }// for(int i=1;i<=m;i++)// printf("%d ",dis[i]); sum=0; int v; while(true){ v=-1; for(int i=1;i<=m;i++){ if(!vis[i]&&(v==-1||dis[i]<dis[v])) v=i; } if(v==-1)break; if(dis[v]==inf) break; vis[v]=true; sum+=dis[v]; for(int i =1;i<=m;i++){ dis[i]=min(dis[i],a[v][i]); } } for(int i=1;i<=m;i++){ if(!vis[i]) { printf("?\n"); return ; } } printf("%d\n",sum);}int main(){ while(~scanf("%d %d",&n,&m),n){ for(int i=1;i<=m;i++) for(int j=1;j<=m;j++){ a[i][j]=inf; if(i==j) a[i][j] = 0; } int x,y,v; for(int i=0;i<n;i++){ scanf("%d%d%d",&x,&y,&v); a[x][y]=a[y][x]=v; } prim(); } return 0;}
阅读全文
2 0
- HDU 1863 畅通工程(最小生成树prim算法)
- HDU - 1863 - 畅通工程 (最小生成树!!prim算法!!)
- HDU-1863 畅通工程(最小生成树[Prim])
- 【HDU-1863】畅通工程(最小生成树prim)
- HDU 1863 畅通工程 (最小生成树--Kruscal、Prim)
- HDU-1863-畅通工程(最小生成树,prim)
- HDU 1863 畅通工程(prim最小生成树)
- 【最小生成树+Prim】杭电 hdu 1863 畅通工程
- hdu 1863畅通工程(prim最小生成树)
- HDU 1863 畅通工程 prim算法 最小生成树
- HDU 1863 畅通工程 (最小生成树Prim)
- HDU-1863- 畅通工程(最小生成树,prim)
- HDU 1863畅通工程(最小生成树)(prim算法)
- HDU---1233-畅通工程(最小生成树prim)
- HDU-1879 继续畅通工程(最小生成树[Prim])
- hdu 1879 继续畅通工程(最小生成树,prim)
- hdu--1863畅通工程2(典型的最小生成树)prim算法
- hdu 1863 畅通工程 Prim生成树
- asp简单样例(1)
- 使用AndroidStudio将工具库打成jar包和aar包
- The method process(ItemDetailInfo, Task) of type ItemRuKuUtils must override a superclass method的解决方
- CMD循环
- Netty源码解读Promise
- HDU-1863-畅通工程(最小生成树,prim)
- Objective-c 自定对象 转 JSON
- 《编程珠玑》——第一章习题
- crt连接不上Linux虚拟机
- java设计模式01
- Docker网络之一:Docker 默认网络
- myrocks 的 pk 的生成原理(k/v)
- 打开r40平台Anroid6.0下的AP6212A1版本的WIFI(兼容配置)(分色排版)
- 安卓拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)