码迷,mamicode.com
首页 > 其他好文 > 详细

ACM 还是畅通工程

时间:2017-08-08 10:51:08      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:目标   i++   while   ring   string   case   用例   str   ini   

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.
 
 
题解:会用并查集就可以AC 没有坑!!!!
 1 /*
 2     Time: 2017/8/8
 3     Author: WTZPT
 4 */
 5 #include<iostream>
 6 #include<cstring>
 7 #include<algorithm>
 8 using namespace std;
 9 int parent[105];
10 
11 struct node{    //定义一个结构体,方便数据收集 
12     int a,b,s;   //a,b是两个村庄的编号 s是两个村庄的距离 
13 }caseii[5005]; 
14 
15 void init()   //初始化parent数组  
16 {
17     for(int i = 0; i < 105; i++)
18         parent[i] = i;    
19 } 
20 
21 bool cmp(node a,node b)   //定义sort排序方式 
22 {
23     return a.s < b.s;
24 }
25 
26 int find(int n)     //找根值 
27 {
28     if(parent[n] == n)
29         return n;
30     else
31         return find(parent[n]);
32 }
33 
34 int  merge(int a,int b)
35 {
36     a = find(a);
37     b = find(b);
38     if(a != b)
39     {
40         parent[b] = a;
41         return 1;
42     } 
43     return 0;
44 }
45 
46 int main()
47 {
48     int n;
49     while(cin>>n&&n)
50     {
51         init();
52         int t = n*(n-1)/2;
53         for(int i =0; i < t;i++)
54             cin>>caseii[i].a>>caseii[i].b>>caseii[i].s;
55         sort(caseii,caseii+t,cmp);
56         int sum = 0;
57         for(int i = 0; i < t;i++)
58         {    
59             int temp = merge(caseii[i].a,caseii[i].b);
60             if(temp)  sum += caseii[i].s;
61         }    
62         
63         cout<<sum<<endl;
64     }    
65 
66      return 0;
67 }

 

ACM 还是畅通工程

标签:目标   i++   while   ring   string   case   用例   str   ini   

原文地址:http://www.cnblogs.com/jj81/p/7305089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!