1347:孤岛连通工程

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 typedef struct 
 7 {
 8     int start;
 9     int end;
10     int cost;
11 }Ege;
12 Ege s[10001];
13 int fa[1001];
14 int cmp(Ege a,Ege b)
15 {
16     return a.cost<b.cost;
17 }
18 int get_father(int n)
19 {
20     if(fa[n]==n)
21         return n;
22     else
23     {
24         fa[n]=get_father(fa[n]);
25         return fa[n];
26     }
27     
28 }
29 int main()
30 {
31     int m,n;
32     while(scanf("%d%d",&n,&m)!=EOF)
33     {
34         int i,j;
35         for(i=1;i<=n;++i)
36             fa[i]=i;
37         for(i=1;i<=m;++i)
38             scanf("%d%d%d",&s[i].start,&s[i].end,&s[i].cost);
39         sort(s+1,s+m+1,cmp);
40         int count=0,num=0;
41         for(i=1;i<=m&&n>1;++i)
42         {
43             int f_a=get_father(s[i].start),f_b=get_father(s[i].end);
44             if(f_a!=f_b)
45             {
46                 fa[f_b]=f_a;
47                 count+=s[i].cost;
48                 --n;
49             }
50         }
51         if(n==1)
52             printf("%d\n",count);
53         else
54             printf("no\n");
55         
56     }
57     return 0;
58 }

 

posted @ 2012-04-16 17:27  dupuleng  阅读(95)  评论(0)    收藏  举报