#include<cstdio>
#include<cstring>
int dis[505][505],t,n,sym[1000];
void init()
{
memset(sym,0,sizeof(sym));
}
int prim()
{
int ans = -1;
for(int i=0;i<n;i++)
{
int minn = 99999999,minnx;
for(int j=0;j<n;j++)
if(!sym[j]&&dis[0][j]<minn){
minn = dis[0][j];
minnx = j;
}
sym[minnx] = 1;
if(minn>ans)ans = minn;
for(int j=0;j<n;j++)
if(!sym[j]&&dis[0][j]>dis[minnx][j]){
dis[0][j] = dis[minnx][j];
}
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--)
{
init();
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&dis[i][j]);
printf("%d\n",prim());
}
return 0;
}
poj-2485-最小生成树prim算法模板
最新推荐文章于 2017-03-14 22:36:31 发布