求最小生成树中的最大权值
prim算法
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define M 505
#define MAX 900000000
int g[M][M];
int dist[M];
int n,ans;
bool b[M];
void read()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&g[i][j]);
}
}
}
void prim()
{
int i;
int tot=1;
int now=0;
ans=0;
for(i=1;i<n;i++)
{
b[i]=false;
dist[i]=MAX;
}
while(tot<n)
{
for(i=1;i<n;i++)
{
if(!b[i]&&dist[i]>g[now][i])
{
dist[i]=g[now][i];
}
}
int min=MAX;
for(i=1;i<n;i++)
{
if(!b[i]&&dist[i]<min)
{
min=dist[i];
now=i;
}
}
b[now]=true;
tot++;
ans=max(ans,min);
}
}
void answer()
{
printf("%d\n",ans);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
read();
prim();
answer();
}
return 0;
}