并查集 Union-Find

森林结构管理不相交集合:find 沿父链找根并路径压缩,union 按秩合并小树挂大树。

并查集
01 / 20 步
初始状态:每个元素单独成集合(自环 = 根)。 比较 0 · 交换 0
伪代码

				
					
					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
					 
				
			
01 / 20
速度