HDoj-1863-畅通project-并查集
2017-04-12 08:07
387 查看
畅通project
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17006 Accepted Submission(s): 7140
Problem Description
省政府“畅通project”的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,
仅仅要能间接通过公路可达就可以)。
经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。
现请你编敲代码。计算出全省畅通须要的最低成本。
Input
測试输入包括若干測试用例。每一个測试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行相应村庄间道路的成本,每行给出一对正整数。各自是两个村庄的编号。以及此两村庄间道路的成本(也是正整数)。
为简单起见,村庄从1到M编号。
当N为0时,所有输入结束。对应的结果不要输出。
Output
对每一个測试用例,在1行里输出全省畅通须要的最低成本。
若统计数据不足以保证畅通,则输出“?
”。
Sample Input
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
Sample Output
3
?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17006 Accepted Submission(s): 7140
Problem Description
省政府“畅通project”的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,
仅仅要能间接通过公路可达就可以)。
经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。
现请你编敲代码。计算出全省畅通须要的最低成本。
Input
測试输入包括若干測试用例。每一个測试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行相应村庄间道路的成本,每行给出一对正整数。各自是两个村庄的编号。以及此两村庄间道路的成本(也是正整数)。
为简单起见,村庄从1到M编号。
当N为0时,所有输入结束。对应的结果不要输出。
Output
对每一个測试用例,在1行里输出全省畅通须要的最低成本。
若统计数据不足以保证畅通,则输出“?
”。
Sample Input
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
Sample Output
3
?
#include <stdio.h> #include<string.h> #include <algorithm> using namespace std; struct Road { int c1, c2, cost; }; Road road[110]; bool cmp(Road a,Road b) { return a.cost<b.cost; } int city[110]; int find(int a) { int r=a; while(city[r]!=r) r=city[r]; return r; } bool merge(int x, int y) { int fx,fy; fx = find(x); fy = find(y); if(fx == fy) return 0; else if(fx < fy) city[fy] = fx; else city[fx] = fy; return 1; } int main() { int n, m; while(scanf("%d %d", &m, &n) && m) { int i; for(i=1;i<=n;i++) { city[i]=i; } for(int i=0; i<m; ++i) scanf("%d %d %d", &road[i].c1, &road[i].c2, &road[i].cost); sort(road, road+m,cmp); int sum = 0, count = 0; for(int i=0; i<m; i++) { if(merge(road[i].c1, road[i].c2)) { count ++; sum += road[i].cost; } if(count == n-1) break; } if(count == n-1) printf("%d\n", sum); else printf("? \n"); } return 0; }
相关文章推荐
- HDOJ 1863 畅通工程(并查集)
- HDU1863_畅通project【Prim】【并查集】
- HDU 1863:畅通project(带权值的并查集)
- HDoj-1863-畅通工程-并查集
- HDoj-1879-畅通project-并查集
- hdoj 1863 畅通工程【最小生成树,kruskal&&prim】
- hdu1863 畅通project(判定最小生成树)
- HDOJ1863 ( 畅通工程 ) 【最小生成树,kruscal】
- hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
- hdoj畅通工程【并查集】
- HDOJ 1863 畅通工程(Kruskal最小生成树)
- hdoj 1875 畅通project再续【最小生成树 kruskal && prim】
- hdu 1863(畅通工程)(简单的并查集,模板)
- HDOJ1863-畅通工程
- HDOJ-1863-畅通工程
- hdoj 还是畅通工程 并查集实现Kruskal算法
- hdu 1863 畅通工程 最小生成树+并查集
- HDOJ 1232 畅通工程(并查集)
- hdu 1863 畅通project
- 畅通工程2 HDOJ--1863