并查集模板
void Init()
{
for(int i=1;i<=n;i++)
father[i]=i;
}
int Find(int x)
{
if(x==father[x])
return x;
return Find(father[x]);
}
void Union(int x,int y)
{
int nx=Find(x); //不用刻意排序,因为不一定是小数为根节点
int ny=Find(y);
if(nx!=ny) // 满足根节点不同的才合并 // 第一组数据 1 2(合并),1 3(合并),2 3(不合并)
{ //通过这样表示连接,树状图的连接
father[ny]=nx;
}
}