USACO 3.1 Agri-Net(prim模版)

虽然好久没敲过了prim,迅速秒掉。

 1 /*
 2   ID: cuizhe
 3   LANG: C++
 4   TASK: agrinet
 5 */
 6 #include <iostream>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <cmath>
10 #include <algorithm>
11 using namespace std;
12 #define N 100000000
13 int p[101][101],low[101],o[101];
14 int main()
15 {
16     int i,j,k,n,t,ans;
17     freopen("agrinet.in","r",stdin);
18     freopen("agrinet.out","w",stdout);
19     scanf("%d",&n);
20     for(i = 1;i <= n;i ++)
21     {
22         for(j = 1;j <= n;j ++)
23         scanf("%d",&p[i][j]);
24     }
25     o[1] = 1;
26     for(i = 1;i <= n;i ++)
27     low[i] = p[1][i];
28     ans = 0;
29     for(i = 1;i <= n-1;i ++)
30     {
31         t = N;
32         for(j = 1;j <= n;j ++)
33         {
34             if(!o[j]&&t > low[j])
35             {
36                 t = low[j];
37                 k = j;
38             }
39         }
40         if(t == N) break;
41         o[k] = 1;
42         ans += t;
43         for(j = 1;j <= n;j ++)
44         {
45             if(low[j] > p[k][j]&&!o[j])
46             low[j] = p[k][j];
47         }
48     }
49     printf("%d\n",ans);
50     return 0;
51 }
posted @ 2012-11-15 17:05  Naix_x  阅读(162)  评论(0编辑  收藏  举报