数据结构-并查集

数据结构-并查集

并查集(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)

相关推荐
地平线开发者5 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮5 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者5 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考6 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx9 小时前
CART决策树基本原理
算法·机器学习
Wect9 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱10 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
肆忆_13 小时前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星16 小时前
虚函数表:C++ 多态背后的那个男人
c++
Gorway17 小时前
解析残差网络 (ResNet)
算法