sicily 1090 Highways 最小生成树
题目是求最长的边,在生成最小生成树时,用一个变量保存最大的值即可
//Prim算法
#include <iostream>
#include <memory.h>
#define INF 1000000
#define MAX 200
using namespace std;
int main()
{
int arcs[MAX][MAX];
bool isvisit[MAX];
int min_weight[MAX];
int N;
int cases;
cin >> cases;
while (cases--)
{
cin >> N;
memset(isvisit, false, sizeof(isvisit));
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
cin >> arcs[i][j];
for (int i = 0; i < N; i++)
min_weight[i] = arcs[0][i];
isvisit[0] = true;
int _min;
int hold, result = 0, max_weight = 0;
for (int i = 1; i < N; i++)
{
_min = INF;
for (int j = 0; j < N; j++)
{
if (!isvisit[j] && min_weight[j] < _min)
{
_min = min_weight[j];
hold = j;
}
}
max_weight = max(max_weight, _min);
result += _min;
isvisit[hold] = true;
for (int j = 0; j < N; j++)
if (!isvisit[j] && arcs[hold][j] < min_weight[j])
min_weight[j] = arcs[hold][j];
}
cout << max_weight << endl ;
if (cases != 0)
cout << endl;
}
return 0;
}
浙公网安备 33010602011771号