并查集
所谓并查集,就是一个用于快速查询所属集合与合并集合的东西.
初始化:
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);// 这就是前面需要递归寻找的原因(只更新了一处)
}
--END--

浙公网安备 33010602011771号
我的博客: 𝟷𝙻𝚒𝚞
本文链接: https://www.cnblogs.com/1Liu/articles/16755749.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!