题意说明:
一个岛国若干个村庄建高速公路,求构建MST的最大边长。
#include<iostream>
#include<fstream>
using namespace std;
const int MAX = 501;
const int MAXCOST = 0x7fffffff;
int graph[MAX][MAX];
int prim(int graph[][MAX], int n)
{
int lowcost[MAX], mst[MAX];
int min, minid, value=0;
for (int i = 1; i <= n; i++)
{
lowcost[i] = graph[1][i];
mst[i] = 1;
}
mst[1] = 0;
for (int i = 1; i <= n - 1;i++)
{
min = MAXCOST;
minid = 0;
for (int j = 2; j <= n; j++)
{
if (lowcost[j] != 0 && lowcost[j] < min)
{
min=lowcost[j];
minid = j;
}
}
if (min>value)
{
value = min;
}
lowcost[minid] = 0;
for (int j = 2; j <= n; j++)
{
if (graph[minid][j]<lowcost[j])
{
lowcost[j] = graph[minid][j];
mst[j] = minid;
}
}
}
return value;
}
int main()
{
int cases,n;
//ifstream in("input.txt");
cin >> cases;
for (int i = 0; i < cases; i++)
{
cin >> n;
for (int m = 1; m <= n; m++)
{
for (int k = 1; k <= n; k++)
{
cin >> graph[m][k];
}
}
cout<<prim(graph,n)<<endl;
}
//system("pause");
return 0;
}