bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { // 本质上,相当于判断有向图中是否有环 // 如果有环,则不能完成所有课程 // corner case if (numCourses <= 0) return true; // build the graph DirectedGraph graph = buildGraph(numCourses, prerequisites); // detect cycle return !graph.detectCycle(); }