poj 1258 Agri-Net

简单的模板题:prim算法适合浓密图:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define MAXN 110
 4 #define INF 100000000
 5 
 6 int n, v[MAXN], low[MAXN], w[MAXN][MAXN];
 7 
 8 void solve()
 9 {
10         int ans = 0;
11         memset(v,0,sizeof(v));
12         v[0] = 1;
13         for(int i = 1; i < n; i ++) low[i] = w[0][i];
14         for(int i = 0; i < n-1; i ++)
15         {
16             int min = INF, p;
17             for(int j = 0; j < n; j ++)
18                 if(!v[j] && low[j] < min) min = low[j], p = j;
19             v[p] = 1;
20             ans += min;
21             for(int j = 0; j < n; j ++)
22                 if(!v[j] && low[j] > w[p][j]) low[j] = w[p][j];
23         }
24         printf("%d\n",ans);
25 }
26 
27 int main()
28 {
29     while(~scanf("%d",&n))
30     {
31         for(int i = 0; i < n; i ++)
32             for(int j = 0; j < n; j ++)
33             {
34                 int a;
35                 scanf("%d",&a);
36                 w[i][j] = a;
37             }
38             solve();
39     }
40     return 0;
41 }
posted on 2012-08-05 12:40  BFP  阅读(146)  评论(0编辑  收藏  举报