You are given numCourses courses labeled 0 to numCourses - 1 and a list of prerequisite pairs. Each pair [a, b] means you must take course b before course a.
Return True if it is possible to finish all courses, or False if a cycle makes it impossible.
Input: numCourses = 2, prerequisites = [[1, 0]] Output: True Explanation: Take course 0 first, then course 1.
Input: numCourses = 2, prerequisites = [[1, 0], [0, 1]] Output: False Explanation: Course 0 requires course 1, and course 1 requires course 0 - a cycle.
Input: numCourses = 4, prerequisites = [[1, 0], [2, 1], [3, 2]] Output: True Explanation: Linear chain 0 -> 1 -> 2 -> 3 with no cycle.
numCourses = 2, prerequisites = [[1, 0]]