Course Schedule

mediumGraphscycle detection via topological sort / DFS statesB75Solve on LeetCode#207

Part of Practice: Ordering & Connectivity

There are numCourses courses labeled 0 to numCourses−1, and a list of prerequisite pairs where [a, b] means you must finish course b before taking course a. Return true if it is possible to finish every course, false otherwise. Up to 2000 courses and 5000 prerequisite pairs.

Examples

Input:
numCourses = 2, prerequisites = [[1,0]]
Output:
true

Take course 0 first, then course 1.

Input:
numCourses = 2, prerequisites = [[1,0],[0,1]]
Output:
false

Course 1 needs 0 first, and course 0 needs 1 first — a circular requirement no order can satisfy.

Input:
numCourses = 3, prerequisites = [[1,0],[2,1]]
Output:
true

A simple chain: 0, then 1, then 2.

Hints

One at a time — struggle first, peek second.

Your thinking space — verify on LeetCode, then mark it.