代码如下:
class Solution {
public:
bool dfs(vector<vector<int>> &AdjacencyList,vector<int> &Visit,int numCourses,int Nodenum){
if( Visit[Nodenum] == 1 ) return false;
if( Visit[Nodenum] == 2 ) return true;
Visit[Nodenum] = 1;
for( int adjNodenum : AdjacencyList[Nodenum] ){
if( !dfs(AdjacencyList,Visit,numCourses,adjNodenum) )
return false;
}
Visit[Nodenum] = 2;
return true;
}
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>> AdjacencyList(numCourses);
for( vector<int> vector_item : prerequisites ){
AdjacencyList[vector_item[1]].push_back(vector_item[0]);
}
vector<int> Visit(numCourses,0);
for( int i = 0; i < numCourses; ++i ){
if( !dfs(AdjacencyList,Visit,numCourses,i) )
return false;
}
return true;
}
};