视频加载失败

并查集

214 字
1 分钟
并查集

并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。

顾名思义,并查集支持两种操作:

  • 合并(Union):合并两个元素所属集合(合并对应的树)
  • 查询(Find):查询某个元素所属集合(查询对应的树的根节点),这可以用于判断两个元素是否属于同一集合

并查集在经过修改后可以支持单个元素的删除、移动;使用动态开点线段树还可以实现可持久化并查集。

Pasted image 20240310165444.png
Pasted image 20240310165444.png

struct dsu {
std::vector<int> pa;
explicit dsu(int size) : pa(size) {
std::iota(pa.begin(), pa.end(), 0);
}
int find(int x) {
return pa[x] == x ? x : (pa[x] = find(pa[x]));
}
void unite(int x, int y) {
pa[find(x)] = find(y);
}
};

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

并查集
https://blog.81vm3.xyz/posts/dsu/
作者
Blume
发布于
2024-08-25
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Blume
I build interesting things.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
38
分类
5
标签
98
总字数
23,078
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0

当前页面没有目录

文章目录

当前页面没有目录