← All patterns
Graphs

Union-Find (Disjoint Set Union)

212 practice questions|Medium

When to use it

Efficiently group connected components and check path equivalence in near-constant time.

Key Signals & Indicators

  • Dynamic connectivity checks (are A and B connected?)
  • Detecting cycles in undirected graphs
  • Kruskal's MST, clustering, or grouping relations

Pattern Boilerplate

c++
// C++ Union-Find (DSU) Template
#include <vector>
#include <numeric>

class DSU {
    std::vector<int> parent, rank;
public:
    DSU(int n) {
        parent.resize(n);
        std::iota(parent.begin(), parent.end(), 0); // parent[i] = i
        rank.resize(n, 1);
    }
    
    int find(int i) {
        if (parent[i] == i) return i;
        return parent[i] = find(parent[i]); // Path compression
    }
    
    bool unite(int i, int j) {
        int rootI = find(i);
        int rootJ = find(j);
        if (rootI != rootJ) {
            if (rank[rootI] < rank[rootJ]) std::swap(rootI, rootJ);
            parent[rootJ] = rootI;
            if (rank[rootI] == rank[rootJ]) rank[rootI]++;
            return true;
        }
        return false; // Already in same component
    }
};

Problems using this pattern

1Accounts MergeMedium
ArrayHash TableString
Solve →
2Add Edges to Make Degrees of All Nodes EvenHard
Hash TableGraph Theory
Solve →
3Alien DictionaryHard
ArrayStringDepth-First Search
Solve →
4All Ancestors of a Node in a Directed Acyclic GraphMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
5All Paths from Source Lead to DestinationMedium
Graph TheoryTopological Sort
Solve →
6All Paths From Source to TargetMedium
BacktrackingDepth-First SearchBreadth-First Search
Solve →
7Apply SubstitutionsMedium
ArrayHash TableString
Solve →
8Bricks Falling When HitHard
ArrayUnion-FindMatrix
Solve →
9Build a Matrix With ConditionsHard
ArrayGraph TheoryTopological Sort
Solve →
10Cat and Mouse IIHard
ArrayMathDynamic Programming
Solve →
11Cat and MouseHard
MathDynamic ProgrammingGraph Theory
Solve →
12Cheapest Flights Within K StopsMedium
Dynamic ProgrammingDepth-First SearchBreadth-First Search
Solve →
13Check for Contradictions in EquationsHard
ArrayDepth-First SearchUnion-Find
Solve →
14Check if the Rectangle Corner Is ReachableHard
ArrayMathDepth-First Search
Solve →
15Check if There is a Valid Path in a GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
16Checking Existence of Edge Length Limited Paths IIHard
Depth-First SearchUnion-FindGraph Theory
Solve →
17Checking Existence of Edge Length Limited PathsHard
ArrayTwo PointersUnion-Find
Solve →
18Clone GraphMedium
Hash TableDepth-First SearchBreadth-First Search
Solve →
19Collect Coins in a TreeHard
ArrayTreeGraph Theory
Solve →
20Connecting Cities With Minimum CostMedium
Union-FindGraph TheoryHeap (Priority Queue)
Solve →
21Count Islands With Total Value Divisible by KMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
22Count Pairs Of NodesHard
ArrayHash TableTwo Pointers
Solve →
23Count Servers that CommunicateMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
24Count Sub IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
25Count the Number of Complete ComponentsMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
26Count the Number of Houses at a Certain Distance IMedium
Breadth-First SearchGraph TheoryPrefix Sum
Solve →
27Count the Number of Houses at a Certain Distance IIHard
Graph TheoryPrefix Sum
Solve →
28Count Unreachable Pairs of Nodes in an Undirected GraphMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
29Count Visited Nodes in a Directed GraphHard
Dynamic ProgrammingGraph TheoryMemoization
Solve →
30Count Ways to Build Rooms in an Ant ColonyHard
ArrayMathDynamic Programming
Solve →
31Couples Holding HandsHard
GreedyDepth-First SearchBreadth-First Search
Solve →
32Course Schedule IIMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
33Course Schedule IVMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
34Course ScheduleMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
35Cracking the SafeHard
StringDepth-First SearchGraph Theory
Solve →
36Critical Connections in a NetworkHard
Depth-First SearchGraph TheoryBiconnected Component
Solve →
37Data Stream as Disjoint IntervalsHard
Hash TableBinary SearchUnion-Find
Solve →
38Design Excel Sum FormulaHard
ArrayHash TableString
Solve →
39Design Graph With Shortest Path CalculatorHard
Graph TheoryDesignHeap (Priority Queue)
Solve →
40Detect Cycles in 2D GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
41Detonate the Maximum BombsMedium
ArrayMathDepth-First Search
Solve →
42Digit Operations to Make Two Integers EqualMedium
MathGraph TheoryHeap (Priority Queue)
Solve →
43Distance to a Cycle in Undirected GraphHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
44Divide Nodes Into the Maximum Number of GroupsHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
45Evaluate DivisionMedium
ArrayStringDepth-First Search
Solve →
46Find a Safe Walk Through a GridMedium
ArrayBreadth-First SearchGraph Theory
Solve →
47Find All People With SecretHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
48Find All Possible Recipes from Given SuppliesMedium
ArrayHash TableString
Solve →
49Find Center of Star GraphEasy
Graph Theory
Solve →
50Find Champion IIMedium
Graph Theory
Solve →
51Find Closest Node to Given Two NodesMedium
Depth-First SearchGraph Theory
Solve →
52Find Critical and Pseudo-Critical Edges in Minimum Spanning TreeHard
Union-FindGraph TheorySorting
Solve →
53Find Diameter Endpoints of a TreeMedium
TreeBreadth-First SearchGraph Theory
Solve →
54Find Edges in Shortest PathsHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
55Find Eventual Safe StatesMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
56Find if Path Exists in GraphEasy
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
57Find Minimum Diameter After Merging Two TreesHard
TreeDepth-First SearchBreadth-First Search
Solve →
58Find Minimum Time to Reach Last Room IMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
59Find Minimum Time to Reach Last Room IIMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
60Find Shortest Path with K HopsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
61Find the CelebrityMedium
Two PointersGraph TheoryInteractive
Solve →
62Find the City With the Smallest Number of Neighbors at a Threshold DistanceMedium
Dynamic ProgrammingGraph TheoryShortest Path
Solve →
63Find the Safest Path in a GridMedium
ArrayBinary SearchBreadth-First Search
Solve →
64Find the String with LCPHard
ArrayStringDynamic Programming
Solve →
65Find the Town JudgeEasy
ArrayHash TableGraph Theory
Solve →
66Flower Planting With No AdjacentMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
67Frequencies of Shortest SupersequencesHard
ArrayStringBit Manipulation
Solve →
68Frog Position After T SecondsHard
TreeDepth-First SearchBreadth-First Search
Solve →
69GCD Sort of an ArrayHard
ArrayMathUnion-Find
Solve →
70Get Watched Videos by Your FriendsMedium
ArrayHash TableBreadth-First Search
Solve →
71Graph Connectivity With ThresholdHard
ArrayMathUnion-Find
Solve →
72Graph Valid TreeMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
73Groups of StringsHard
ArrayHash TableString
Solve →
74Is Graph Bipartite?Medium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
75Jump Game VIIIMedium
ArrayDynamic ProgrammingStack
Solve →
76Keys and RoomsMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
77Largest Color Value in a Directed GraphHard
Hash TableStringDynamic Programming
Solve →
78Largest Component Size by Common FactorHard
ArrayHash TableMath
Solve →
79Last Day Where You Can Still CrossHard
ArrayBinary SearchDepth-First Search
Solve →
80Lexicographically Smallest Equivalent StringMedium
StringUnion-Find
Solve →
81Longest Consecutive SequenceMedium
ArrayHash TableUnion-Find
Solve →
82Longest Cycle in a GraphHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
83Longest Increasing Path in a MatrixHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
84Longest Path With Different Adjacent CharactersHard
ArrayStringTree
Solve →
85Longest Uploaded PrefixMedium
Hash TableBinary SearchUnion-Find
Solve →
86Loud and RichMedium
ArrayDepth-First SearchGraph Theory
Solve →
87Make Lexicographically Smallest Array by Swapping ElementsMedium
ArrayUnion-FindSorting
Solve →
88Making A Large IslandHard
ArrayDepth-First SearchBreadth-First Search
Solve →
89Max Area of IslandMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
90Maximal Network RankMedium
Graph Theory
Solve →
91Maximize Alternating Sum Using SwapsHard
ArrayGreedyUnion-Find
Solve →
92Maximize Amount After Two Days of ConversionsMedium
ArrayStringDepth-First Search
Solve →
93Maximum Candies You Can Get from BoxesHard
ArrayBreadth-First SearchGraph Theory
Solve →
94Maximum Employees to Be Invited to a MeetingHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
95Maximum Number of Accepted InvitationsMedium
ArrayDepth-First SearchGraph Theory
Solve →
96Maximum Number of Fish in a GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
97Maximum Number of Points From Grid QueriesHard
ArrayTwo PointersBreadth-First Search
Solve →
98Maximum Partition FactorHard
ArrayBinary SearchDepth-First Search
Solve →
99Maximum Path Quality of a GraphHard
ArrayBacktrackingGraph Theory
Solve →
100Maximum Score of a Node SequenceHard
ArrayGraph TheorySorting
Solve →
101Maximum Segment Sum After RemovalsHard
ArrayUnion-FindPrefix Sum
Solve →
102Maximum Star Sum of a GraphMedium
ArrayGreedyGraph Theory
Solve →
103Maximum Sum of Edge Values in a GraphHard
MathGreedyGraph Theory
Solve →
104Maximum Total Importance of RoadsMedium
GreedyGraph TheorySorting
Solve →
105Maximum XOR of Two Non-Overlapping SubtreesHard
TreeDepth-First SearchGraph Theory
Solve →
106Min Cost to Connect All PointsMedium
ArrayUnion-FindGraph Theory
Solve →
107Minimize Hamming Distance After Swap OperationsMedium
ArrayDepth-First SearchUnion-Find
Solve →
108Minimize Malware Spread IIHard
ArrayHash TableDepth-First Search
Solve →
109Minimize Malware SpreadHard
ArrayHash TableDepth-First Search
Solve →
110Minimize Maximum Component CostMedium
Binary SearchUnion-FindGraph Theory
Solve →
111Minimize Maximum Value in a GridHard
ArrayUnion-FindGraph Theory
Solve →
112Minimize the Maximum Edge Weight of GraphMedium
Binary SearchDepth-First SearchBreadth-First Search
Solve →
113Minimum Cost of a Path With Special RoadsMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
114Minimum Cost Path with Edge ReversalsMedium
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
115Minimum Cost to Buy ApplesMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
116Minimum Cost to Convert String IMedium
ArrayStringGraph Theory
Solve →
117Minimum Cost to Convert String IIHard
ArrayStringDynamic Programming
Solve →
118Minimum Cost to Make at Least One Valid Path in a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
119Minimum Cost to Reach City With DiscountsMedium
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
120Minimum Cost to Reach Destination in TimeHard
ArrayDynamic ProgrammingGraph Theory
Solve →
121Minimum Cost Walk in Weighted GraphHard
ArrayBit ManipulationUnion-Find
Solve →
122Minimum Degree of a Connected Trio in a GraphHard
Graph TheoryEnumeration
Solve →
123Minimum Edge Reversals So Every Node Is ReachableHard
Dynamic ProgrammingDepth-First SearchBreadth-First Search
Solve →
124Minimum Edge Weight Equilibrium Queries in a TreeHard
ArrayTreeGraph Theory
Solve →
125Minimum Fuel Cost to Report to the CapitalMedium
TreeDepth-First SearchBreadth-First Search
Solve →
126Minimum Height TreesMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
127Minimum Number of Vertices to Reach All NodesMedium
Graph Theory
Solve →
128Minimum Number of Visited Cells in a GridHard
ArrayDynamic ProgrammingStack
Solve →
129Minimum Obstacle Removal to Reach CornerHard
ArrayBreadth-First SearchGraph Theory
Solve →
130Minimum Operations to Equalize Binary StringHard
MathStringBreadth-First Search
Solve →
131Minimum Operations to Remove Adjacent Ones in MatrixHard
ArrayGraph TheoryMatrix
Solve →
132Minimum Path Cost in a Hidden GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
133Minimum Reverse OperationsHard
ArrayHash TableBreadth-First Search
Solve →
134Minimum Runes to Add to Cast SpellHard
ArrayDepth-First SearchBreadth-First Search
Solve →
135Minimum Score of a Path Between Two CitiesMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
136Minimum Time for K Connected ComponentsMedium
Binary SearchUnion-FindGraph Theory
Solve →
137Minimum Time to Break Locks IIHard
ArrayDepth-First SearchGraph Theory
Solve →
138Minimum Time to Visit a Cell In a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
139Minimum Weighted Subgraph With the Required PathsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
140Modify Graph Edge WeightsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
141Most Profitable Path in a TreeMedium
ArrayTreeDepth-First Search
Solve →
142Most Stones Removed with Same Row or ColumnMedium
Hash TableDepth-First SearchUnion-Find
Solve →
143Network Delay TimeMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
144Node With Highest Edge ScoreMedium
Hash TableGraph Theory
Solve →
145Number of Closed IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
146Number of Connected Components in an Undirected GraphMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
147Number of Distinct Islands IIHard
ArrayHash TableDepth-First Search
Solve →
148Number of Distinct IslandsMedium
ArrayHash TableDepth-First Search
Solve →
149Number of EnclavesMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
150Number of Good PathsHard
ArrayHash TableTree
Solve →
151Number of Increasing Paths in a GridHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
152Number of Islands IIHard
ArrayHash TableUnion-Find
Solve →
153Number of IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
154Number of Operations to Make Network ConnectedMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
155Number of Possible Sets of Closing BranchesHard
Bit ManipulationGraph TheoryHeap (Priority Queue)
Solve →
156Number of ProvincesMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
157Number of Restricted Paths From First to Last NodeMedium
Dynamic ProgrammingGraph TheoryTopological Sort
Solve →
158Number of Unique CategoriesMedium
Union-FindInteractiveCounting
Solve →
159Number of Ways to Arrive at DestinationMedium
Dynamic ProgrammingGraph TheoryTopological Sort
Solve →
160Number Of Ways To Reconstruct A TreeHard
ArrayHash TableTree
Solve →
161Number of Ways to Reorder Array to Get Same BSTHard
ArrayMathDivide and Conquer
Solve →
162Optimize Water Distribution in a VillageHard
Union-FindGraph TheoryHeap (Priority Queue)
Solve →
163Parallel Courses IIHard
Dynamic ProgrammingBit ManipulationGraph Theory
Solve →
164Parallel Courses IIIHard
ArrayDynamic ProgrammingGraph Theory
Solve →
165Parallel CoursesMedium
Graph TheoryTopological Sort
Solve →
166Path Existence Queries in a Graph IMedium
ArrayHash TableBinary Search
Solve →
167Path Existence Queries in a Graph IIHard
ArrayTwo PointersBinary Search
Solve →
168Path With Maximum Minimum ValueMedium
ArrayBinary SearchDepth-First Search
Solve →
169Path with Maximum ProbabilityMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
170Path With Minimum EffortMedium
ArrayBinary SearchDepth-First Search
Solve →
171Paths in Maze That Lead to Same RoomMedium
Graph Theory
Solve →
172Possible BipartitionMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
173Power Grid MaintenanceMedium
ArrayHash TableDepth-First Search
Solve →
174Process Restricted Friend RequestsHard
Union-FindGraph Theory
Solve →
175Rank Transform of a MatrixHard
ArrayUnion-FindGraph Theory
Solve →
176Reachable Nodes In Subdivided GraphHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
177Reachable Nodes With RestrictionsMedium
ArrayHash TableTree
Solve →
178Reconstruct ItineraryHard
ArrayStringDepth-First Search
Solve →
179Redundant Connection IIHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
180Redundant ConnectionMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
181Regions Cut By SlashesMedium
ArrayHash TableDepth-First Search
Solve →
182Remove Max Number of Edges to Keep Graph Fully TraversableHard
Union-FindGraph Theory
Solve →
183Remove Methods From ProjectMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
184Reorder Routes to Make All Paths Lead to the City ZeroMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
185Satisfiability of Equality EquationsMedium
ArrayStringUnion-Find
Solve →
186Second Minimum Time to Reach DestinationHard
Breadth-First SearchGraph TheoryShortest Path
Solve →
187Sentence Similarity IIMedium
ArrayHash TableString
Solve →
188Sequence ReconstructionMedium
ArrayGraph TheoryTopological Sort
Solve →
189Shortest Cycle in a GraphHard
Breadth-First SearchGraph Theory
Solve →
190Shortest Distance After Road Addition Queries IMedium
ArrayBreadth-First SearchGraph Theory
Solve →
191Shortest Path Visiting All NodesHard
Dynamic ProgrammingBit ManipulationBreadth-First Search
Solve →
192Shortest Path with Alternating ColorsMedium
Breadth-First SearchGraph Theory
Solve →
193Similar String GroupsHard
ArrayHash TableString
Solve →
194Smallest String With SwapsMedium
ArrayHash TableString
Solve →
195Sort Items by Groups Respecting DependenciesHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
196Strange Printer IIHard
ArrayGraph TheoryTopological Sort
Solve →
197String Transforms Into Another StringHard
Hash TableStringGraph Theory
Solve →
198Subarray With Elements Greater Than Varying ThresholdHard
ArrayStackUnion-Find
Solve →
199Sum of Distances in TreeHard
Dynamic ProgrammingTreeDepth-First Search
Solve →
200Sum of Remoteness of All CellsMedium
ArrayHash TableDepth-First Search
Solve →
201Surrounded RegionsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
202Swim in Rising WaterHard
ArrayBinary SearchDepth-First Search
Solve →
203Synonymous SentencesMedium
ArrayHash TableString
Solve →
204The Earliest Moment When Everyone Become FriendsMedium
ArrayUnion-FindSorting
Solve →
205The Maze IIMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
206The Maze IIIHard
ArrayStringDepth-First Search
Solve →
207The Most Similar Path in a GraphHard
Dynamic ProgrammingGraph Theory
Solve →
208The Time When the Network Becomes IdleMedium
ArrayBreadth-First SearchGraph Theory
Solve →
209Tree DiameterMedium
TreeDepth-First SearchBreadth-First Search
Solve →
210Unit Conversion IMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
211Valid Arrangement of PairsHard
ArrayDepth-First SearchGraph Theory
Solve →
212Validate Binary Tree NodesMedium
TreeDepth-First SearchBreadth-First Search
Solve →