Topological Sort (BFS)
JavaScript
medium
40 mins
Given a directed acyclic graph (DAG) with n vertices and adjacency list adj, return a topological ordering using Kahn's algorithm. If the graph contains a cycle, return an error message.
Examples
Input: n = 3, adj = [[1], [2], []] Output: [0, 1, 2] Explanation: 0 -> 1 -> 2, so ordering is 0, 1, 2
Input: n = 4, adj = [[1, 2], [3], [3], []] Output: [0, 2, 1, 3] or [0, 1, 2, 3] Explanation: 0 must come before 1 and 2, both 1 and 2 must come before 3
Input: n = 3, adj = [[1], [2], [0]] Output: "Cycle detected — Topological Sort not possible" Explanation: Graph contains a cycle 0 -> 1 -> 2 -> 0
Constraints
- 1 ≤ n ≤ 10^4
- 0 ≤ adj[i].length ≤ n - 1
- Graph may or may not be acyclic
Function Signature
function topologicalSortKahn(n, adj) { // Your code here }
Test Cases
- Basic cases: n=3, adj=[[1],[2],[]], n=4, adj=[[1,2],[3],[3],[]]
- Single node: n=1, adj=[[]]
- Disconnected graph: n=4, adj=[[1],[],[3],[]]
- Cycle detection: n=3, adj=[[1],[2],[0]], n=2, adj=[[1],[0]]
- Complex graph: n=5, adj=[[1,2],[3],[3,4],[],[]]
Companies:
Atlassian
adobe
amazon
google
linkedin
microsoft
phonepe
Solve Similar questions 🔥
Want to upskill? Explore our courses!
Namaste DSA
Master DSA from scratch with numerous problems, and expert guidance.
Namaste React
Wanna dive deep into React and become Frontend Expert? Learn with me now!
Namaste Frontend System Design
The most comprehensive and detailed course for frontend system design.
Namaste Node.js
Wanna dive deep into Node.js? Enroll into `Namaste Node.js` now!
