社区讨论

90分求助

P1525[NOIP 2010 提高组] 关押罪犯参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo891jb7
此快照首次捕获于
2023/10/27 14:45
2 年前
此快照最后确认于
2023/10/27 14:45
2 年前
查看原帖
CPP
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100005, maxm = 100005;

int n, m, fa[maxn << 1];
struct Edge {
	int u, v, w;
	bool operator < (const Edge &a) const {
		return a.w < w;
	}
} e[maxm << 1];

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

void sovel() {
	scanf("%d%d", &n, &m);
	for (register int i = 1; i <= n; ++i) {
		fa[i] = i;
		fa[i + n] = i + n;
	}
	for (register int i = 1; i <= m; ++i) {
		int u, v, w;
		scanf("%d%d%d", &u, &v, &w);
		e[i] = {u, v, w};
	}
	sort(e + 1, e + m + 1);
	for (register int i = 1; i <= n; ++i) {
		int fu = find(e[i].u);
		int fv = find(e[i].v);
		if (fu == fv) {
			printf("%d\n", e[i].w);
			return;
		}
		int ffu = find(e[i].u + n);
		int ffv = find(e[i].v + n);
		fa[fu] = ffv;
		fa[fv] = ffu;
	}
	printf("%d\n", 0);
	return;
}

int main() {
	sovel();
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...