← All patterns
Graphs

Topological Sort (Kahn's / DFS)

162 practice questions|Medium

When to use it

Sort vertices linearly in a Directed Acyclic Graph (DAG) respecting node dependencies.

Key Signals & Indicators

  • DAG dependency resolution problems (e.g. course scheduling)
  • Finding topological ordering or verifying cycle existence
  • Process ordering tasks under precedence constraints

Pattern Boilerplate

c++
// C++ Kahn's Algorithm (BFS Topological Sort) Template
#include <vector>
#include <queue>

std::vector<int> topologicalSort(int n, const std::vector<std::vector<int>>& adjList) {
    std::vector<int> inDegree(n, 0);
    for (int u = 0; u < n; ++u) {
        for (int v : adjList[u]) inDegree[v]++;
    }
    
    std::queue<int> q;
    for (int i = 0; i < n; ++i) {
        if (inDegree[i] == 0) q.push(i);
    }
    
    std::vector<int> order;
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        order.push_back(u);
        
        for (int v : adjList[u]) {
            inDegree[v]--;
            if (inDegree[v] == 0) q.push(v);
        }
    }
    
    return order.size() == n ? order : std::vector<int>{}; // Empty if cycle detected
}

Problems using this pattern

1Add Edges to Make Degrees of All Nodes EvenHard
Hash TableGraph Theory
Solve →
2Alien DictionaryHard
ArrayStringDepth-First Search
Solve →
3All Ancestors of a Node in a Directed Acyclic GraphMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
4All Paths from Source Lead to DestinationMedium
Graph TheoryTopological Sort
Solve →
5All Paths From Source to TargetMedium
BacktrackingDepth-First SearchBreadth-First Search
Solve →
6Apply SubstitutionsMedium
ArrayHash TableString
Solve →
7Build a Matrix With ConditionsHard
ArrayGraph TheoryTopological Sort
Solve →
8Cat and Mouse IIHard
ArrayMathDynamic Programming
Solve →
9Cat and MouseHard
MathDynamic ProgrammingGraph Theory
Solve →
10Cheapest Flights Within K StopsMedium
Dynamic ProgrammingDepth-First SearchBreadth-First Search
Solve →
11Check for Contradictions in EquationsHard
ArrayDepth-First SearchUnion-Find
Solve →
12Checking Existence of Edge Length Limited Paths IIHard
Depth-First SearchUnion-FindGraph Theory
Solve →
13Checking Existence of Edge Length Limited PathsHard
ArrayTwo PointersUnion-Find
Solve →
14Clone GraphMedium
Hash TableDepth-First SearchBreadth-First Search
Solve →
15Collect Coins in a TreeHard
ArrayTreeGraph Theory
Solve →
16Connecting Cities With Minimum CostMedium
Union-FindGraph TheoryHeap (Priority Queue)
Solve →
17Count Pairs Of NodesHard
ArrayHash TableTwo Pointers
Solve →
18Count the Number of Complete ComponentsMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
19Count the Number of Houses at a Certain Distance IMedium
Breadth-First SearchGraph TheoryPrefix Sum
Solve →
20Count the Number of Houses at a Certain Distance IIHard
Graph TheoryPrefix Sum
Solve →
21Count Unreachable Pairs of Nodes in an Undirected GraphMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
22Count Visited Nodes in a Directed GraphHard
Dynamic ProgrammingGraph TheoryMemoization
Solve →
23Count Ways to Build Rooms in an Ant ColonyHard
ArrayMathDynamic Programming
Solve →
24Couples Holding HandsHard
GreedyDepth-First SearchBreadth-First Search
Solve →
25Course Schedule IIMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
26Course Schedule IVMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
27Course ScheduleMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
28Cracking the SafeHard
StringDepth-First SearchGraph Theory
Solve →
29Critical Connections in a NetworkHard
Depth-First SearchGraph TheoryBiconnected Component
Solve →
30Design Excel Sum FormulaHard
ArrayHash TableString
Solve →
31Design Graph With Shortest Path CalculatorHard
Graph TheoryDesignHeap (Priority Queue)
Solve →
32Detonate the Maximum BombsMedium
ArrayMathDepth-First Search
Solve →
33Digit Operations to Make Two Integers EqualMedium
MathGraph TheoryHeap (Priority Queue)
Solve →
34Distance to a Cycle in Undirected GraphHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
35Divide Nodes Into the Maximum Number of GroupsHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
36Evaluate DivisionMedium
ArrayStringDepth-First Search
Solve →
37Find a Safe Walk Through a GridMedium
ArrayBreadth-First SearchGraph Theory
Solve →
38Find All People With SecretHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
39Find All Possible Recipes from Given SuppliesMedium
ArrayHash TableString
Solve →
40Find Center of Star GraphEasy
Graph Theory
Solve →
41Find Champion IIMedium
Graph Theory
Solve →
42Find Closest Node to Given Two NodesMedium
Depth-First SearchGraph Theory
Solve →
43Find Critical and Pseudo-Critical Edges in Minimum Spanning TreeHard
Union-FindGraph TheorySorting
Solve →
44Find Diameter Endpoints of a TreeMedium
TreeBreadth-First SearchGraph Theory
Solve →
45Find Edges in Shortest PathsHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
46Find Eventual Safe StatesMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
47Find if Path Exists in GraphEasy
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
48Find Minimum Diameter After Merging Two TreesHard
TreeDepth-First SearchBreadth-First Search
Solve →
49Find Minimum Time to Reach Last Room IMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
50Find Minimum Time to Reach Last Room IIMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
51Find Shortest Path with K HopsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
52Find the CelebrityMedium
Two PointersGraph TheoryInteractive
Solve →
53Find the City With the Smallest Number of Neighbors at a Threshold DistanceMedium
Dynamic ProgrammingGraph TheoryShortest Path
Solve →
54Find the Town JudgeEasy
ArrayHash TableGraph Theory
Solve →
55Flower Planting With No AdjacentMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
56Frequencies of Shortest SupersequencesHard
ArrayStringBit Manipulation
Solve →
57Frog Position After T SecondsHard
TreeDepth-First SearchBreadth-First Search
Solve →
58Get Watched Videos by Your FriendsMedium
ArrayHash TableBreadth-First Search
Solve →
59Graph Valid TreeMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
60Is Graph Bipartite?Medium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
61Jump Game VIIIMedium
ArrayDynamic ProgrammingStack
Solve →
62Keys and RoomsMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
63Largest Color Value in a Directed GraphHard
Hash TableStringDynamic Programming
Solve →
64Longest Cycle in a GraphHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
65Longest Increasing Path in a MatrixHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
66Longest Path With Different Adjacent CharactersHard
ArrayStringTree
Solve →
67Loud and RichMedium
ArrayDepth-First SearchGraph Theory
Solve →
68Maximal Network RankMedium
Graph Theory
Solve →
69Maximize Amount After Two Days of ConversionsMedium
ArrayStringDepth-First Search
Solve →
70Maximum Candies You Can Get from BoxesHard
ArrayBreadth-First SearchGraph Theory
Solve →
71Maximum Employees to Be Invited to a MeetingHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
72Maximum Number of Accepted InvitationsMedium
ArrayDepth-First SearchGraph Theory
Solve →
73Maximum Partition FactorHard
ArrayBinary SearchDepth-First Search
Solve →
74Maximum Path Quality of a GraphHard
ArrayBacktrackingGraph Theory
Solve →
75Maximum Score of a Node SequenceHard
ArrayGraph TheorySorting
Solve →
76Maximum Star Sum of a GraphMedium
ArrayGreedyGraph Theory
Solve →
77Maximum Sum of Edge Values in a GraphHard
MathGreedyGraph Theory
Solve →
78Maximum Total Importance of RoadsMedium
GreedyGraph TheorySorting
Solve →
79Maximum XOR of Two Non-Overlapping SubtreesHard
TreeDepth-First SearchGraph Theory
Solve →
80Min Cost to Connect All PointsMedium
ArrayUnion-FindGraph Theory
Solve →
81Minimize Malware Spread IIHard
ArrayHash TableDepth-First Search
Solve →
82Minimize Malware SpreadHard
ArrayHash TableDepth-First Search
Solve →
83Minimize Maximum Component CostMedium
Binary SearchUnion-FindGraph Theory
Solve →
84Minimize Maximum Value in a GridHard
ArrayUnion-FindGraph Theory
Solve →
85Minimize the Maximum Edge Weight of GraphMedium
Binary SearchDepth-First SearchBreadth-First Search
Solve →
86Minimum Cost of a Path With Special RoadsMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
87Minimum Cost Path with Edge ReversalsMedium
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
88Minimum Cost to Buy ApplesMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
89Minimum Cost to Convert String IMedium
ArrayStringGraph Theory
Solve →
90Minimum Cost to Convert String IIHard
ArrayStringDynamic Programming
Solve →
91Minimum Cost to Make at Least One Valid Path in a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
92Minimum Cost to Reach City With DiscountsMedium
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
93Minimum Cost to Reach Destination in TimeHard
ArrayDynamic ProgrammingGraph Theory
Solve →
94Minimum Cost Walk in Weighted GraphHard
ArrayBit ManipulationUnion-Find
Solve →
95Minimum Degree of a Connected Trio in a GraphHard
Graph TheoryEnumeration
Solve →
96Minimum Edge Reversals So Every Node Is ReachableHard
Dynamic ProgrammingDepth-First SearchBreadth-First Search
Solve →
97Minimum Edge Weight Equilibrium Queries in a TreeHard
ArrayTreeGraph Theory
Solve →
98Minimum Fuel Cost to Report to the CapitalMedium
TreeDepth-First SearchBreadth-First Search
Solve →
99Minimum Height TreesMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
100Minimum Number of Vertices to Reach All NodesMedium
Graph Theory
Solve →
101Minimum Obstacle Removal to Reach CornerHard
ArrayBreadth-First SearchGraph Theory
Solve →
102Minimum Operations to Remove Adjacent Ones in MatrixHard
ArrayGraph TheoryMatrix
Solve →
103Minimum Path Cost in a Hidden GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
104Minimum Runes to Add to Cast SpellHard
ArrayDepth-First SearchBreadth-First Search
Solve →
105Minimum Score of a Path Between Two CitiesMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
106Minimum Time for K Connected ComponentsMedium
Binary SearchUnion-FindGraph Theory
Solve →
107Minimum Time to Break Locks IIHard
ArrayDepth-First SearchGraph Theory
Solve →
108Minimum Time to Visit a Cell In a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
109Minimum Weighted Subgraph With the Required PathsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
110Modify Graph Edge WeightsHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
111Most Profitable Path in a TreeMedium
ArrayTreeDepth-First Search
Solve →
112Most Stones Removed with Same Row or ColumnMedium
Hash TableDepth-First SearchUnion-Find
Solve →
113Network Delay TimeMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
114Node With Highest Edge ScoreMedium
Hash TableGraph Theory
Solve →
115Number of Connected Components in an Undirected GraphMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
116Number of Good PathsHard
ArrayHash TableTree
Solve →
117Number of Increasing Paths in a GridHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
118Number of Operations to Make Network ConnectedMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
119Number of Possible Sets of Closing BranchesHard
Bit ManipulationGraph TheoryHeap (Priority Queue)
Solve →
120Number of ProvincesMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
121Number of Restricted Paths From First to Last NodeMedium
Dynamic ProgrammingGraph TheoryTopological Sort
Solve →
122Number of Ways to Arrive at DestinationMedium
Dynamic ProgrammingGraph TheoryTopological Sort
Solve →
123Number Of Ways To Reconstruct A TreeHard
ArrayHash TableTree
Solve →
124Optimize Water Distribution in a VillageHard
Union-FindGraph TheoryHeap (Priority Queue)
Solve →
125Parallel Courses IIHard
Dynamic ProgrammingBit ManipulationGraph Theory
Solve →
126Parallel Courses IIIHard
ArrayDynamic ProgrammingGraph Theory
Solve →
127Parallel CoursesMedium
Graph TheoryTopological Sort
Solve →
128Path Existence Queries in a Graph IMedium
ArrayHash TableBinary Search
Solve →
129Path Existence Queries in a Graph IIHard
ArrayTwo PointersBinary Search
Solve →
130Path with Maximum ProbabilityMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
131Paths in Maze That Lead to Same RoomMedium
Graph Theory
Solve →
132Possible BipartitionMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
133Power Grid MaintenanceMedium
ArrayHash TableDepth-First Search
Solve →
134Process Restricted Friend RequestsHard
Union-FindGraph Theory
Solve →
135Rank Transform of a MatrixHard
ArrayUnion-FindGraph Theory
Solve →
136Reachable Nodes In Subdivided GraphHard
Graph TheoryHeap (Priority Queue)Shortest Path
Solve →
137Reachable Nodes With RestrictionsMedium
ArrayHash TableTree
Solve →
138Reconstruct ItineraryHard
ArrayStringDepth-First Search
Solve →
139Redundant Connection IIHard
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
140Redundant ConnectionMedium
Depth-First SearchBreadth-First SearchUnion-Find
Solve →
141Remove Max Number of Edges to Keep Graph Fully TraversableHard
Union-FindGraph Theory
Solve →
142Remove Methods From ProjectMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
143Reorder Routes to Make All Paths Lead to the City ZeroMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
144Satisfiability of Equality EquationsMedium
ArrayStringUnion-Find
Solve →
145Second Minimum Time to Reach DestinationHard
Breadth-First SearchGraph TheoryShortest Path
Solve →
146Sequence ReconstructionMedium
ArrayGraph TheoryTopological Sort
Solve →
147Shortest Cycle in a GraphHard
Breadth-First SearchGraph Theory
Solve →
148Shortest Distance After Road Addition Queries IMedium
ArrayBreadth-First SearchGraph Theory
Solve →
149Shortest Path Visiting All NodesHard
Dynamic ProgrammingBit ManipulationBreadth-First Search
Solve →
150Shortest Path with Alternating ColorsMedium
Breadth-First SearchGraph Theory
Solve →
151Sort Items by Groups Respecting DependenciesHard
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
152Strange Printer IIHard
ArrayGraph TheoryTopological Sort
Solve →
153String Transforms Into Another StringHard
Hash TableStringGraph Theory
Solve →
154Sum of Distances in TreeHard
Dynamic ProgrammingTreeDepth-First Search
Solve →
155The Maze IIMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
156The Maze IIIHard
ArrayStringDepth-First Search
Solve →
157The Most Similar Path in a GraphHard
Dynamic ProgrammingGraph Theory
Solve →
158The Time When the Network Becomes IdleMedium
ArrayBreadth-First SearchGraph Theory
Solve →
159Tree DiameterMedium
TreeDepth-First SearchBreadth-First Search
Solve →
160Unit Conversion IMedium
Depth-First SearchBreadth-First SearchGraph Theory
Solve →
161Valid Arrangement of PairsHard
ArrayDepth-First SearchGraph Theory
Solve →
162Validate Binary Tree NodesMedium
TreeDepth-First SearchBreadth-First Search
Solve →