参考:算法学习笔记(1) : 并查集 - 知乎

并查集 (disjoint set union) 是 最优美的数据结构之一

合并 (merge): 把两个集合合并

查找 (find): 查找一个元素的代表元素(并且在过程中压缩路径)

每个集合由一个代表元素(representative element)代表

我们使用并查集时,为了不让其形成链条图而加大时间复杂度,会用 路径压缩 让其变成菊花图

初始化:所有元素都是自己的代表

int fa[n+5]
for(int i=1;i<=n;i++){fa=i;
}

并合:找到两个元素的代表元素,把其中一个的代表设成另一个

void merge(int a, int b){int x=find(a), y=find(b);fa[x] = fa[y];
}

查找:如果当前是代表元素返回,否则设当前元素的代表节点 (因此每个元素直接directly 连到代表元素)为之后查找的根结点再返回

int find(int x){return fa[x] == x ? x : (fa[x]=find(fa[x]));
}

并合集延伸出来的操作:

查找两个元素是否在同一个集合里

算法总结 — 并查集相关推荐

  1. Kruskal算法与并查集

    Kruskal算法与并查集 一.Kruskal算法 1. 概念 Kruskal算法就是按照图中各个边上的权值大小进行递增排序,以此来构造最小生成树. 2.重点解析 在由Kruskal实现最小生成树的过 ...

  2. 简单易懂的并查集算法以及并查集实战演练

    文章目录 前言 一.引例 二.结合引例写出并查集 1. 并查集维护一个数组 2. 并查集的 并 操作 3. 并查集的 查 操作 4. 基本并查集模板代码实现--第一版(有错误后面分析) 4.1 Jav ...

  3. 【算法】并查集的运用

    并查集的概念 朋友圈 团伙问题 连通图 总结 并查集的概念 并查集顾名思义就是合并和查找,问题在于合并什么,查找什么.这里有一种朴素的思想来解释这两个问题.就是把这个想成一棵树.合并什么?就是把不在这 ...

  4. 算法:并查集(四种方式)

    简单并查集 public class UnionFind {private int[] id;private int count;public UnionFind(int N) {count = N; ...

  5. Kruskal算法和并查集

    Kruskal算法 步骤: 第一步:给所有边按照从小到大顺序排列(直接使用库函数qsort / sort). 第二步:从小到大依次考察每条边(u,v),在执行第二步时会出现以下两种情况: 情况1:u和 ...

  6. Java实现_算法_并查集

    并查集 作用:用来查找某个图中是否含有闭环. 比如图一: 上图中就是没有闭环的一个图,而下图(图二)就是一个有闭环的图 思路1-数组寻根法: 顾名思义,数组寻根法(自己称呼的)就是寻找每个节点的根节点 ...

  7. 【算法】并查集刷题总结

    目录 P1396 营救 题目描述 "咚咚咚--""查水表!"原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门-- 妈妈下班回家, ...

  8. python【数据结构与算法】并查集引入

    文章目录 1 并查集 2 策略 3 代码 1 并查集 Disjoint Set,实际上字面翻译是不相交的集合. 中文名 "并查集" 实际上源自其基本操作: union(X,Y):求 ...

  9. 算法(并查集--合并集合)

    并查集–合并集合 一共有n个数,编号是1~n,最开始每个数各自在一个集合中. 现在要进行m个操作,操作共有两种: "M a b",将编号为a和b的两个数所在的集合合并,如果两个数已 ...

最新文章

  1. 年化利息100%,现金贷监管寒冬将至
  2. 程序员常见的坏习惯,你躺枪了吗?
  3. C#中的DBNull、Null、和String.Empty解释【转】
  4. Springboot2.x +JPA 集成 Apache ShardingSphere 同库分表
  5. 利用用户级线程提高多线程应用的性能
  6. jdk8 接口新特性
  7. mysql驱动加载原理_老调重弹:JDBC系列 之 lt;驱动载入原理全面解析gt;
  8. 产品 电信nb接口调用_NB-IoT 平台对接常见问题(中国电信)
  9. TFN FMT715C/ 760 C系列无线综合测试仪性能如何
  10. Winform SplitContainer控件可调整大小
  11. SPSS进行问卷数据的效度分析及结果解读(问卷数据统计分析第3步(转载)
  12. jQuery动画slideUp()不正常位移原因
  13. blend2d + MFC
  14. 电脑无法输出4K信号怎么办
  15. Keystone 组件
  16. 【Go语言入门指南】零基础入门 go 语言 | Golang 入门指南
  17. Docker常用命令和实战演练
  18. 别了,我的程序员生涯!
  19. BZOJ 2709 Violet 1 迷宫花园
  20. Pygame实战:升级后的2048小游戏—解锁新花样,根本停不下来【附源码】

热门文章

  1. JavaWeb阶段JSP详情介绍(上)
  2. C语言 —— float单精度浮点型与double双精度浮点型的使用
  3. Java生鲜电商平台-商城后台架构与原型图实战
  4. 10分钟快速搭建实战Web项目:生鲜电商
  5. 从一名白纸交易者到稳定盈利交易员需要多长时间?
  6. VLC WebPlugin中文
  7. 毕设过程记录(web管理系统)
  8. 计算机组成原理课程设计报告书
  9. 排序算法——快速排序(图解+代码)
  10. Http? Https?