思路:prim
#include "stdio.h"
#define M 505
#define MAX 65537
int map[M][M];
void prim (int n)
{
cost[M],flag[M],i,j,k,min,sum = 0;
< n;i ++)
cost[i] = map[0][i];
flag[i] = 0;
1;
< n;i ++)
min = MAX;
for (j = 1;j < n;j ++)
if (flag[j]==0&&cost[j]
< min)
{
min = cost[j];
k = j;
}
flag[k] =1;
sum =
cost[k]>sum?cost[k]:sum;
//最短路径中最大的
for (j = 1;j < n;j ++)
if (cost[j] > map[k][j])
cost[j] = map[k][j];
//原来处理完后,cost保存的并不是每个最小值
("%d\n",sum);
}
int main ()
{
t,n,i,j;
("%d",&t);
--)
scanf ("%d",&n);
for (i = 0;i < n;i ++)