并查集的概念
并查集主要有两种操作:
union(x, y)
: 将元素 x 和元素 y 所属的两个集合合并为一个集合。find(x)
: 查找元素 x 所属的集合的代表元素。
并查集的核心思想是维护一个由树构成的森林,其中每个树的根节点代表一个集合的代表元素。在合并集合时,将一个集合的根节点连接到另一个集合的根节点上,从而将两个集合合并为一个集合。在查找元素所属集合时,沿着树向上找到根节点,即可确定元素所属的集合。
并查集的实现
我们使用一个字典来存储每个元素对应的父节点,用于实现并查集。根节点的父节点为自身。为了提高效率,我们使用路径压缩优化,在查找根节点时将沿途的节点直接连接到根节点上。
以下是一个简单的并查集的 Python 实现:
class DisjointSetUnion:
def __init__(self