undirected graph
0
1
2
3
4
parent[]
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 |
Union-Find
▸1parent[i] ← i ; count ← n // each node its own component2find(x): while parent[x] != x: x = parent[x]; return x3for (a, b) in edges:4 ra, rb ← find(a), find(b)5 if ra != rb: parent[rb] = ra; count-- // merge two components6 // else: same component → edge redundant, count unchanged7return count // # connected components
state
- n5
- count5
- parent[0,1,2,3,4]