POJ 2485 Highways(最小生成树)

题目链接

第一WA,发现读错题了,以为求最大生成树的最小边。。。再次PE,题目中明明说:There is an empty line after each test case.这不是坑人吗?数据中没有换行

还算是比较裸的prim的。。

 1 #include <stdio.h>

 2 #include <string.h>

 3 #define N 100000000

 4 int map[501][501],low[501],o[501];

 5 int main()

 6 {

 7     int i,j,k,n,t,min,max;

 8     scanf("%d",&t);

 9     while(t--)

10     {

11         memset(map,0,sizeof(map));

12         memset(o,0,sizeof(o));

13         scanf("%d",&n);

14         for(i = 1;i <= n;i ++)

15         {

16             for(j = 1;j <= n;j ++)

17             scanf("%d",&map[i][j]);

18         }

19         for(i = 1;i <= n;i ++)

20         {

21             low[i] = map[1][i];

22         }

23         o[1] = 1;

24         for(;;)

25         {

26             min = N;

27             for(i = 1;i <= n;i ++)

28             {

29                 if(!o[i]&&min > low[i])

30                 {

31                     min = low[i];

32                     k = i;

33                 }

34             }

35             if(min == N)break;

36             o[k] = 1;

37             for(j = 1;j <= n;j ++)

38             {

39                 if(!o[j]&&map[k][j] < low[j])

40                 {

41                     low[j] = map[k][j];

42                 }

43             }

44         }

45         max = 0;

46         for(i = 1;i <= n;i ++)

47         {

48             if(max < low[i])

49             max = low[i];

50         }

51         printf("%d\n",max);

52     }

53     return 0;

54 }

你可能感兴趣的:(最小生成树)