90分求助
查看原帖
90分求助
761294
XY_WuQiuQiu楼主2022/8/18 16:25
#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;
}

1WA 9AC

2022/8/18 16:25
加载中...