ACM
January 21, 2021

并查集

并查集

并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。

——百度百科

主要操作

优化

路径压缩

每次查找的时候,如果路径较长,则修改信息,以便下次查找的时候速度更快。

第一步,找到根结点。

第二步,修改查找路径上的所有节点,将它们都指向根结点。

——百度百科

按秩合并

将深度小的树合并到深度大的树上

拓展

种族并查集

通过多个并查集将不同的元素归类,并维护相互之间的关系

例题:洛谷 P2024 食物链

用三个并查集分别表示自己、自己的猎物(自己吃的)以及自己的天敌(吃自己的),同时维护三个并查集,通过他们三者的关系判断当前读入数据是否为真

带权并查集

基于路径压缩,每个节点都记录的是与根节点之间的权值

习题

A Ubiquitous Religions · POJ 2524

B 食物链 · 洛谷 P2024

C How Many Tables · HDU 1213

D 畅通工程 · HDU 1232

E 人见人爱A^B · HDU 2035

F How Many Answers Are Wrong · HDU 3038

About this Post

This post is written by OwlllOvO, licensed under CC BY-NC 4.0.

#C++#并查集