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 }