五分钟糊了一个并查集拿下 42pts 讨论区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;
}