版权声明:听说这里让写版权声明~~~ https://blog.csdn.net/m0_37691414/article/details/82114524
解析:求最小生成树的最大边。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 600;
int e[N][N], dis[N];
bool visit[N];
int n;
int main() {
int T;
scanf("%d", &T);
while(T--){
fill(dis, dis + N, INF);
memset(visit, false, sizeof(visit));
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
scanf("%d", &e[i][j]);
dis[1] = 0;
int minx = 0;
for(int i = 0; i < n; ++i){
int u = -1, minn = INF;
for(int j = 1; j <= n; ++j)
if(visit[j] == false && dis[j] < minn){
minn = dis[j];
u = j;
}
if(u == -1) break;
if(minn > minx ) minx = minn;
visit[u] = true;
for(int v = 1; v <= n; ++v){
if(visit[v] == false && dis[v] > e[u][v]){
dis[v] = e[u][v];
}
}
}
cout<< minx << endl;
}
return 0;
}