hdu1233 还是畅通工程 最小生成树(kruskal算法)
2016-01-23 15:38
295 查看
还是畅通工程
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
Output
对每个测试用例,在1行里输出最小的公路总长度。
Sample Input
3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
Sample Output
3
5
Hint
Hint
Huge input, scanf is recommended.
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
Output
对每个测试用例,在1行里输出最小的公路总长度。
Sample Input
3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
Sample Output
3
5
Hint
Hint
Huge input, scanf is recommended.
#include<cstdio> int f[5000]; int n,m; int u[5000],v[5000],w[5000]; void sort()//排序 { for(int i = 1; i <= m; i++) for(int j = i + 1; j <= m; j++) if(w[i] > w[j]){ int t = w[i]; w[i] = w[j]; w[j] = t; t = u[i]; u[i] =u[j]; u[j] = t; t = v[i]; v[i] = v[j]; v[j] = t; } } int find(int x)//找所在集合 { int r = x; while(f[r] != r) r = f[r]; return r; } void set() { int i,ans = 0,x,y; sort();//从小到大边权排序 for(i = 1; i <= m; i++) //printf("%d %d %d\n",u[i],v[i],w[i]); for(i = 1; i <= m; i++){ x = find(u[i]); y = find(v[i]); //printf("%d %d\n",x,y); if(x != y){//不在一个集合,则合并 f[x] = y; ans += w[i]; } } printf("%d\n",ans); } int main() { while(scanf("%d",&n) && n) { m = n*(n - 1)/2; for(int i = 1; i <= m; i++){ f[i] = i; scanf("%d%d%d",&u[i],&v[i],&w[i]); } set(); } return 0; }
相关文章推荐
- (进阶篇)每日一更:函数式编程(Reduce函数)
- springmvc log4j配置
- linux时区的几个代码片段
- 【POI2015】【BZOJ4378】Logistyka
- leetcode之Reorder List
- 一道google面试题(dp)
- iOS中llvm-Obfuscation的配置
- HDU-5578-Friendship of Frog【2015上海赛区】
- 算法导论第三版习题5.3
- 转:ios的crash框架方法论
- OSPF的stub、完全stub及NSSA区域各自的特点
- 常用的正则表达式集锦
- centos7之docker使用systemd
- OSPF路由过滤和LSA过滤的区别,以及实现方法
- python--列表 、元组、字典
- 加权平均数以及方差
- 2413: C语言习题 折半查找
- Java内部类
- android高级框架xUtils之HttpUtils
- 对使命召唤OL游戏中队友能相互救治的动作设定的感慨