#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <list>
#include <stack>
#include <algorithm>
using namespace std;
int main()
{
const int max=100000000;
int T;
scanf("%d",&T);
while (T--)
{
int n;
scanf("%d",&n);
int i,j,A[500][500];
int d[500];
bool record[500]={false};
for (i=0;i<=n-1;i++)
for (j=0;j<=n-1;j++)
scanf("%d",&A[i][j]);
for (i=0;i<=n-1;i++)
d[i]=max;
int min;
int pos;
int ans=0;
d[0]=0;
for (i=0;i<=n-1;i++)
{
min=max;
for (j=0;j<=n-1;j++)
if (!record[j] && d[j]<min)
{
pos=j;
min=d[pos];
}
if (min==max)
continue;
record[pos]=1;
for (j=0;j<=n-1;j++)
if (!record[j] && A[pos][j]<d[j])
d[j]=A[pos][j];
}
int maxn=0;
for (i=0;i<=n-1;i++)
if (d[i]!=max && d[i]>maxn)
maxn=d[i];
if (T!=0)
printf("%d\n\n",maxn);
else
printf("%d\n",maxn);
}
return 0;
}
Sicily1090 && POJ2485(最小生成树)
最新推荐文章于 2021-05-17 16:12:50 发布