依旧是最简单的最小生成树
这次用prim去写(万恶的Presentation Error)
#include<stdio.h>
#include<stdlib.h>
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
int flag[501];
int f[501][501];
int main()
{
int T;int min[501];
scanf("%d",&T);
while (T--)
{
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%d",&f[i][j]);
for (int i=1;i<=n;i++)
{
flag[i]=f[1][i];
min[i]=1;
}
int t,m,ans=0;
for (int i=1;i<=n-1;i++)
{
t=10000000;
for (int j=1;j<=n;j++)
if (flag[j] && t>flag[j])
{
t=flag[j];
m=j;
}
if (t>ans) ans=t;
min[m]=0;
for (int j=1;j<=n;j++)
{
if (f[m][j]<flag[j])
{
flag[j]=f[m][j];
min[j]=m;
}
}
}
printf("%d\n",ans);
}
}