There are numCourses courses labeled 0..numCourses-1. prerequisites[i] = [a, b] means you must take course b before course a. Return true if you can finish all courses, i.e. the prerequisite graph has no cycle.
Patterns: topological sort, bfs, graph. Difficulty: medium.