Optimal Algorithmic Approach
Disjoint Set Union with path compression + union by rank.
Core Invariants & Edge Cases
- find() with path compression: O(α(n)) amortized
- union() by rank prevents tall trees
- Use for dynamic connectivity, minimum spanning tree (Kruskal's)