InterviewHubPRO
Section Overview
Q84

Question 84 of 100

Part 10: Graphs, BFS, DFS & Union-Find (80 - 90)

84%
DSA Patterns (Multi-Lang)•Part 10: Graphs, BFS, DFS & Union-Find (80 - 90)

Course Schedule (I & II).

In Simple Words: Topological Sort (Kahn's Algorithm):

  1. Compute in-degree for each course.
  2. Queue all courses with in-degree 0.
  3. Process courses: decrement neighbors' in-degree. If neighbor hits 0, enqueue it. If count processed equals $N$, no cycle exists.
  • Time: $O(V + E)$ | Space: $O(V + E)$
Multi-Language Solutions
Switch tabs or choose All
from collections import deque

def canFinish(numCourses: int, prerequisites: list[list[int]]) -> bool:
    adj = [[] for _ in range(numCourses)]
    in_degree = [0] * numCourses
    for crs, pre in prerequisites:
        adj[pre].append(crs)
        in_degree[crs] += 1
    q = deque([i for i in range(numCourses) if in_degree[i] == 0])
    count = 0
    while q:
        curr = q.popleft()
        count += 1
        for nei in adj[curr]:
            in_degree[nei] -= 1
            if in_degree[nei] == 0:
                q.append(nei)
    return count == numCourses