并查集

居然没写过补一下

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;
}
posted @ 2026-07-05 22:10  msjing  阅读(6)  评论(0)    收藏  举报