//并查集
#include<iostream>
using namespace std;
const int maxn=10010;
int father[maxn];
int Rank[10010];
void init(int n){
for(int i=0;i<n;i++)
{
father[i]=i;
Rank[i]=0;
}
}
int find(int x){
if(father[x]==x) return x;
else{
return father[x]=find(father[x]);
}
}
void unite(int x,int y){
x=find(x);
y=find(y);
if(x==y) return;
if(Rank[x]<Rank[y]){
father[x]=y;
}
else{
father[y]=x;
if(Rank[x]==Rank[y])
Rank[x]++;
}
}
bool same(int x,int y){
return find(x)==find(y);
}


被折叠的 条评论
为什么被折叠?



