POJ 2485 Highways

http://poj.org/problem?id=2485

求最小生成树中最长的那个边

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #define INF 0x0fffffff
 5 int N,T;
 6 int mat[502][502];
 7 int prim()
 8 {
 9     int start=0;
10     bool visited[502]={false};
11     int nearest[502];
12     int max_len=-1;
13     int min,pos;
14     int i,j;
15     for(i=0;i<=N;i++)
16         nearest[i]=mat[start][i];
17     visited[start]=true;
18     nearest[start]=0;
19     for(i=1;i<N;i++) {
20         min=INF;
21         for(j=0;j<N;j++) {
22             if(!visited[j]&&nearest[j]<min) {
23                 min=nearest[j];
24                 pos=j;
25             }
26         }
27         visited[pos]=true;
28         if(min>max_len)
29             max_len=min;
30         for(j=0;j<N;j++)
31             if(!visited[j]&&nearest[j]>mat[pos][j])
32                 nearest[j]=mat[pos][j];
33     }
34     return max_len;
35 }
36         
37 int main()
38 {
39     scanf("%d",&T);
40     while(T--) {
41         scanf("%d",&N);
42         int i,j;
43         for(i=0;i<N;i++)
44             for(j=0;j<N;j++)
45                 scanf("%d",&mat[i][j]);
46         printf("%d\n",prim());
47     }
48     return 0;
49 }

 

posted @ 2013-03-01 20:20  linyvxiang  阅读(159)  评论(0编辑  收藏  举报