§05 动态规划
并查集 Union-Find
森林结构管理不相交集合:find 沿父链找根并路径压缩,union 按秩合并小树挂大树。
并查集
伪代码
1
// 并查集:森林 + 父指针
2
function find(x):
3
if parent[x] != x:
4
parent[x] = find(parent[x]) // 路径压缩
5
return parent[x]
6
7
function union(x, y):
8
rx = find(x); ry = find(y)
9
if rx == ry: return
10
// 按秩合并:小树挂大树
11
if rank[rx] < rank[ry]: parent[rx] = ry
12
else: parent[ry] = rx
13