int par[maxn];//父节点
int deep[maxn];深度
void init(int n) {
for (int i = 0; i < 0; i++) {
par[i] = i;
deep[i] = 0;
}
}
int find(int x) {
if (par[x] == x) {
return x;
}
else {
return par[x] = find(par[x]);
}
}
void unite(int x, int y) {
x = find(x);
y = find(y);
if (x == y) return;
if (deep[x] < deep[y]) {
par[x] = y;
}
else {
par[y] = x;
if (deep[x] == deep[y]) deep[x]++;
}
}
bool same(int x,int y) {
return find(x) == find(x);
}
并查集
最新推荐文章于 2024-07-29 20:58:50 发布