ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hdu1233 还是畅通工程(kruskal+并查集)

2019-10-15 18:53:49  阅读:342  来源: 互联网

标签:int hdu1233 kruskal 查集 测试用例 村庄 MAX 公路 Edge


Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 71430    Accepted Submission(s): 32276


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  
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int n,m;
 5 const int MAX=5005;
 6 struct Edge{
 7     int from,to,val;
 8 }edge[MAX];
 9 int fa[MAX];
10 
11 bool cmp(Edge x,Edge y){
12     return x.val<y.val;
13 }
14 
15 int find(int x){
16     int k=x;
17     while(fa[k]!=k)k=fa[k];
18     return k;
19 }
20 
21 int kruskal(){
22     int res=0;
23     for(int i=1;i<=n;i++)fa[i]=i;
24     sort(edge,edge+m,cmp);
25     for(int i=0,k=0;i<m&&k<n-1;i++){
26         int fx=find(edge[i].from),fy=find(edge[i].to);
27         if(fx!=fy){
28             fa[fx]=fy;
29             k++;
30             res+=edge[i].val;
31         }
32     }
33     return res;
34 }
35 
36 int main(){
37     while(scanf("%d",&n),n){
38         m=n*(n-1)/2;
39         for(int i=0;i<m;i++){
40             scanf("%d%d%d",&edge[i].from,&edge[i].to,&edge[i].val);
41         }
42         printf("%d\n",kruskal());
43     }
44 }

 

标签:int,hdu1233,kruskal,查集,测试用例,村庄,MAX,公路,Edge
来源: https://www.cnblogs.com/ChangeG1824/p/11679535.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有