并查集经典例题以及代码
时间: 2023-05-16 17:06:16 浏览: 122
并查集经典例题是指使用并查集解决的问题,比如判断图中是否存在环、判断两个节点是否在同一个连通块中等。以下是一个简单的并查集实现代码:
```
class UnionFind:
def __init__(self, n):
self.parent = list(range(n))
self.rank = [0] * n
def find(self, x):
if self.parent[x] != x:
self.parent[x] = self.find(self.parent[x])
return self.parent[x]
def union(self, x, y):
px, py = self.find(x), self.find(y)
if px == py:
return
if self.rank[px] > self.rank[py]:
self.parent[py] = px
elif self.rank[px] < self.rank[py]:
self.parent[px] = py
else:
self.parent[py] = px
self.rank[px] += 1
```
这个代码实现了并查集的两个基本操作:查找和合并。其中,find(x) 函数用于查找节点 x 的根节点,union(x, y) 函数用于将节点 x 和节点 y 所在的连通块合并。
阅读全文