0
点赞
收藏
分享

微信扫一扫

洛谷P2820 Kruscal最小生成森林

霍华德 2022-04-26 阅读 79
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 110, M = 210;
int n, m;//点数边数
struct Edge
{
	int a, b, w;
    //重载<运算符 sort使用
	bool operator < (const Edge& t)const
	{
		return w < t.w;
	}
}e[M];
int p[N];

int find(int x)
{
	return p[x] == x ? x : find(p[x]);
}

int main()
{
	cin >> n >> m;
	//并查集初始化
	for (int i = 1; i <= n; i++)p[i] = i;

	for (int i = 0; i < m; i++)
	{
		int a, b, w;
		cin >> a >> b >> w;
		e[i] = { a,b,w };
	}

	sort(e, e + m);

	int res = 0;//统计没有放入最小生成森林的权值和
	for (int i = 0; i < m; i++)
	{
		int pa = find(e[i].a), pb = find(e[i].b), w = e[i].w;
		if (pa != pb)p[pa] = pb;
		else res += w;
	}

	cout << res << endl;

	return 0;
}
举报

相关推荐

滑雪 洛谷P2573 最小生成树

P2820 局域网(kruskal)

0 条评论