POJ_2485_Highways(Prim算法 最小生成树)

这道题题意很简单,很明显的Prim,注意各部分的初始化

 1 # include <stdio.h>
 2 # include <string.h>
 3 # define inf 65540
 4 int map[510][510];
 5 int m;
 6 int Prim()
 7 {
 8     int low[510];
 9     int visit[510]={0};
10     int i,j,k=1;
11     int s=1;
12     int point;
13     int max=0,min;
14     memset(low,inf,sizeof(low));
15     visit[s]=1;
16     while(1)
17     {
18         if(k == m)
19             break;
20         min=inf;
21         for(j=2;j<=m;j++)
22         {
23             if(!visit[j] && low[j] > map[s][j])
24                 low[j]=map[s][j];
25             if(!visit[j] && min>low[j])
26             {
27                 min=low[j];
28                 point=j;
29             }
30         }
31         if(max<min)
32         {
33             max=min;
34         }
35         s=point;
36         visit[s]=1;
37         k++;
38     }
39     return max;
40 }
41 int main()
42 {
43     int i,j,k,n;
44     scanf("%d",&n);
45 //    getchar();
46     while(n--)
47     {
48         scanf("%d",&m);
49         for(i=1;i<=m;i++)
50         {
51             for(j=1;j<=m;j++)
52             {
53                 scanf("%d",&map[i][j]);
54             }
55         }
56         printf("%d\n",Prim());
57     }
58     return 0;
59 }

 

posted on 2013-08-16 15:35  随风浪子的博客  阅读(98)  评论(0编辑  收藏  举报

导航