并查集
居然没写过补一下
struct Disjoint_Set_Union
{
int fa[maxn];
void init() {for (int i=1;i<=n;i++) fa[i]=i;}
int fid(int x) {return fa[x] == x ? x : fa[x]=fid(fa[x]);}
void merge(int x,int y) {if (fid(x)!=fid(y)) fa[fid(x)]=fid(y);}
int jud(int x,int y) {return fid(x) == fid(y);}
}B;
int fid(int x) {return fa[x]==x?x:fa[x]=fid(fa[x]);}
int fid(int x)
{
if (fa[x]!=x) fa[x]=fid(fa[x]);
return fa[x];
}
void add(int x,int y)
{
x=fid(x);
y=fid(y);
if (x!=y) fa[y]=x;
}
bool judge(int x,int y)
{
x=fid(x);
y=fid(y);
if (x == y) return 1;
else return 0;
}

浙公网安备 33010602011771号