- 初始化:每个元素自成一集合,自己为代表元素
int a[10086];//a[i]表示i元素所在集合的代表元素
for(int i=1;i<=10086;i++)
a[i]=i;
- 查询(路径压缩)
int find(int x){//查询x元素所在集合的代表元素
return a[x]==x?x:a[x]=find(a[x]);
}
- 合并
void merge(int x,int y)
{
int xx=find(x),yy=find(y);
a[xx]=yy;
}