头像

Cyan

四川成都

深度强化学习炼丹师

信息学竞赛模板(九)— 并查集

信息学竞赛模板(九)— 并查集

2021-03-15 · 99次阅读 · 原创 · 数据结构与算法

介绍

并查集时一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构。详细的说,并查集包含以下两个基本操作:

  1. Get,查询一个元素属于那个集合
  2. Merge,把两个元素的集合合并为一个大集合

模板代码

const int MAX = 1e5+5; int f[MAX], n; //查找,并按节点进行路径压缩 int find(int x){ if(x != f[x]) f[x] = find(f[x]); return f[x]; } //查找2,按边权压缩 int find(int x) { if (x == fa[x]) return x; int root = find(fa[x]); d[x] += d[fa[x]]; return fa[x] = root; //路径压缩 } //初始化 void init(){ for(int i=1; i<=n; i++) f[i] = i; }

例题

  1. AcWing-237-程序自动分析

标题: 信息学竞赛模板(九)— 并查集
链接: https://www.fightingok.cn/detail/69
更新: 2022-09-18 22:36:14
版权: 本文采用 CC BY-NC-SA 3.0 CN 协议进行许可