题目是求最长的边,在生成最小生成树时,用一个变量保存最大的值即可

 

//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;
}

相关文章:

  • 2021-09-05
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2021-08-27
  • 2022-12-23
  • 2021-09-09
  • 2021-05-20
猜你喜欢
  • 2021-12-19
  • 2022-01-03
  • 2021-07-14
  • 2021-08-21
  • 2022-01-08
  • 2022-02-03
  • 2021-11-26
相关资源
相似解决方案