题意:求连通n个城市间所需最短路径中最长的
思路:prim
#include "stdio.h"
#define M 505
#define MAX 65537
int map[M][M];
void prim (int n)
{
int cost[M],flag[M],i,j,k,min,sum = 0;
for (i = 0;i < n;i ++)
{
cost[i] = map[0][i];
flag[i] = 0;
}
flag[0] = 1;
for (i = 1;i < 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保存的并不是每个最小值
}
printf ("%d\n",sum);
}
int main ()
{
int t,n,i,j;
scanf ("%d",&t);
while (t --)
{
scanf ("%d",&n);
for (i = 0;i < n;i ++)
for (j = 0;j < n;j ++)
{
scanf ("%d",&map[i][j]);
if (i == j)
map[i][j] = MAX;
//这是要转为最大
}
prim (n);
}
return 0;
}
思路:prim
#include "stdio.h"
#define M 505
#define MAX 65537
int map[M][M];
void prim (int n)
{
}
int main ()
{
}