#include<stdio.h>
#include<string.h>
int n,map[500][500],ans,low[500],vis[500];;;
void prim()
{
int cur,minn,i,k,j;
ans=-1<<30;
memset(vis,0,sizeof(vis));
cur=0;low[0]=0;vis[0]=1;
for(i=1;i<n;i++)
low[i]=map[0][i];
for(i=1;i<n;i++)
{
minn=1<<30;
for(j=0;j<n;j++)
if(!vis[j]&&minn>low[j]){minn=low[j];cur=j;}
vis[cur]=1;
if(ans<minn)ans=minn;
for(j=0;j<n;j++)
if(!vis[j]&&map[cur][j]<low[j])
low[j]=map[cur][j];
}
}
int main()
{
int T,i,k,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]);
prim();
printf("%d\n",ans);
}
return 0;
}
POJ2458 Highways
最新推荐文章于 2017-11-03 21:28:52 发布