数据结构-并查集

数据结构-并查集

并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构。

get操作查询一个元素属于哪一个集合。

merge操作把两个集合合并成一个大集合。

C++ 复制代码
//并查集的存储
int fa[N];
//并查集的初始化,时间复杂度O(n)
//设有n个元素,起初所有元素各自构成一个独立的集合,即有n棵1个点的树。
for(int i=1;i<=n;i++) fa[i]=i;
//并查集的get操作
//若x是树根,则x是集合代表,否则递归访问fa[x]直至根节点。
int get(int x)
{
    if(fa[x]==x) return x;
    return fa[x]=get(fa[x]);
}
//并查集的merge操作
//合并元素x和元素y所在的集合,等价于让x的树根作为y的树根的子节点。
void merge(int x,int y)
{
    fa[get(x)]=get(y);
}

P3367 【模板】并查集 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

相关推荐
!!!!8139 小时前
蓝桥备赛Day1
数据结构·算法
Mr_Xuhhh9 小时前
介绍一下ref
开发语言·c++·算法
七点半7709 小时前
linux应用编程部分
数据结构
王老师青少年编程9 小时前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
夏鹏今天学习了吗9 小时前
【LeetCode热题100(99/100)】柱状图中最大的矩形
算法·leetcode·职场和发展
静听山水9 小时前
Redis核心数据结构-Hash
数据结构·redis·哈希算法
Trouvaille ~9 小时前
【Linux】进程间关系与守护进程详解:从进程组到作业控制到守护进程实现
linux·c++·操作系统·守护进程·作业·会话·进程组
啊阿狸不会拉杆10 小时前
《机器学习导论》第 9 章-决策树
人工智能·python·算法·决策树·机器学习·数据挖掘·剪枝
Mr_Xuhhh10 小时前
C++11实现线程池
开发语言·c++·算法
若水不如远方10 小时前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法