畅通工程 HDU - 1233 

       某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
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


        
 
Huge input, scanf is recommended
书上的模板。。。,正在理解ing
 1 #include<cstdio>
 2 #include<string>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 static const int MAX=105;
 7 static const int INFTY=(1<<21);
 8 static const int WHITE=0;
 9 static const int GRAY=1;
10 static const int BLACK=2;
11 
12 int n,M[MAX][MAX];
13 int prim()
14 {   int u,minv;
15     int d[MAX],color[MAX],p[MAX];
16     for(int i=1;i<=n;i++)
17     {   d[i]=INFTY;
18         color[i]=WHITE;
19         p[i]=-1;
20     }
21     d[1]=0;
22     while(1)
23     {   minv=INFTY;
24         u=-1;
25         for(int i=1;i<=n;i++)
26         {   if(minv>d[i]&&color[i]!=BLACK)
27             {   u=i;
28                 minv=d[i];
29             }
30         }
31         if(u==-1) break;
32         color[u]=BLACK;
33         for(int v=1;v<=n;v++)
34         {   if(color[v]!=BLACK&&M[u][v]!=INFTY)
35             {   if(d[v]>M[u][v])
36                 {   d[v]=M[u][v];
37                     p[v]=u;
38                     color[v]=GRAY;
39                 }
40             } 
41         } 
42     }
43     int sum=0;
44     for(int i=1;i<=n;i++)
45     {   if(p[i]!=-1) sum+=M[i][p[i]];
46     }
47     return sum;
48 }
49 void init()
50 {   int i,j;
51     for(i=1;i<=n;i++)
52     {   for(j=1;j<=n;j++)
53         {  M[i][j]=INFTY;
54         }
55     }
56 
57 }
58 int main()
59 {   while(scanf("%d",&n),n!=0)
60     {  init();
61        int x,y,v;
62        for(int j=0;j<(n*(n-1))/2;j++)
63        {  scanf("%d%d%d",&x,&y,&v);
64           if(v<M[x][y]) M[x][y]=M[y][x]=v;
65        }
66        printf("%d\n",prim());
67     }
68 }

 

posted @ 2017-03-08 20:38  天之道,利而不害  阅读(194)  评论(0编辑  收藏  举报