并查集
int findx(int x)
{
return bin[x]==x?x:findx(bin[x]);//查找根节点,判断是否在同一个集合
]);}
}
int Find(int x){return fa[x]==x?x:fa[x]=Find(fa[x]}
int Findx(int x)
{
if
(bin[x]==x)
return
x;
return
bin[x] = findx(bin[x]);
}
int Same(int u, int v)
{
return Findx(u)==Findx(v);
}
void join(int a, int b)//合并两个点
{
int x, y;
x = findx(a);
y = findx(b);
if(bin[x]!=y)
bin[x]=y;
}