并查集的入门题目 阿 为什么又是一道水题。。。。
void make_set(int x)
{
p[x]=x;
rank[x]=0;
}
int find_set(int x)
{
if(x==p[x]) return x;
else p[x]=find_set(p[x]);
}
void union_set(int x,int y)
{
x=find_set(x);
y=find_set(y);
if(rank[x]>rank[y]) p[y]=x;
else
{
p[x]=y;
if(rank[x]==rank[y]) rank[y]++;
}
}