加载中…

返回上一页

并查集

所谓并查集,就是一个用于快速查询所属集合与合并集合的东西.

初始化

ll fa[maxn];
// 开始都是独立集合
for(rll i=1;i<=n;i++) fa[i]=i;

查询

inline ll find(rll x)
{
	if(x^fa[x]) fa[x]=find(fa[x]);// 不相等,就递归找到它的新的所属,后面合并时只是标记,这里要找到并赋值
	return fa[x];
}

合并

inline void Union(rll x,rll y)// 把y合并到x
{
	fa[find(y)]=find(x);// 这就是前面需要递归寻找的原因(只更新了一处)
}
posted @ 2022-10-05 16:14  1Liu  阅读(9)  评论(0)    收藏  举报