这道题和1789区别不到,数据量大,用Cin结果T了
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const int inf=65540;
int dist[501][501];
int n;
int prim(void)
{
int s=1;
int m=1;
int map[501];
memset(map,0,sizeof(map));
map[s]=1;
int min;
int point;
int sum=0;
int p[501];
memset(p,inf,sizeof(p));
while(1)
{
if(m==n)
{
break;
}
min=inf;
for(int i=2;i<=n;i++)
{
if(!map[i]&&p[i]>dist[s][i])
{
p[i]=dist[s][i];
}
if(!map[i]&&min>p[i])
{
min=p[i];
point=i;
}
}
if(sum<min)
{
sum=min;
}
s=point;
map[s]=1;
m++;
}
return sum;
}
int main(void)
{
int t;
scanf("%d",&t);
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&dist[i][j]);
}
}
cout<<prim()<<endl;;
}
}