关于本题奇妙做法的真伪
查看原帖
关于本题奇妙做法的真伪
546730
billtun楼主2024/8/2 08:58

五分钟糊了一个并查集拿下 42pts42pts 讨论区HACK全过,但自己太菜HACK不掉自己的代码,求HACK。

#include <bits/stdc++.h>
#define Maxn 100005

using namespace std;

int n, m, x, y;
int fa[Maxn], num;
double p;
bool vis[Maxn];

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

int main() {
	ios ::sync_with_stdio(false);
	cin.tie(0);
	
	cin >> n >> m;
	for (int i = 1; i <= n; i ++) {
		fa[i] = i;
	} for (int j = 1; j <= m; j ++) {
		cin >> x >> y, fa[find(x)] = find(y);
	}
	
	for (int i = 1; i <= n; i ++) {
		fa[i] = find(fa[i]);
		if (!vis[fa[i]]) {
			num ++, vis[fa[i]] = 1;
		}
	}
	
	p = 1.0 - num * 1.0 / n;
	printf("%.6lf", p);
	return 0;
}
2024/8/2 08:58
加载中...