Kruskal + 并查集 求调
  • 板块P1396 营救
  • 楼主zrc4889
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/2/4 11:22
  • 上次更新2023/10/24 01:46:32
查看原帖
Kruskal + 并查集 求调
523217
zrc4889楼主2023/2/4 11:22

rt, Kruskal + 并查集 求调。

#include <bits/stdc++.h>
using namespace std;

const int _ = 1e5 + 1;
//int maxx=INT_MIN;
struct Edge
{
	int u, v, w;
} b[_];

bool cmp(Edge a, Edge b)
{
	return a.w < b.w;
}

int fa[_];

int __find(int x)
{
	if (fa[x] == x) return x;
	return fa[x] = __find(fa[x]);
}

signed main()
{
	int n, m, s, t;
	cin >> n >> m >> s >> t;

	for (int i = 1; i <= n; i++)
	{
		int u, v, w;
		cin >> u >> v >> w;
		b[i].u = u, b[i].v = v, b[i].w = w;
//		__union(u, v);
	}

	sort(b + 1, b + 1 + m, cmp);

	for (int i = 1; i <= m; i++)
	{
		int fx = __find(b[i].u), fy = __find(b[i].v);

		if (fx == fy) continue;
		
		if (__find(s) == __find(t)) return cout << b[i].w << endl, 0;
		
	}
	return 0;
}
2023/2/4 11:22
加载中...