这个题是很漂亮的。
class Solution {
public:
//static bool sortit(const pair<int,int> &v1, const pair<int,int> &v2)
//{
// return v1.first != v2.first?v1.first > v2.first:v1.second > v2.second;
//}
bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {
//sort(prerequisites.begin(),prerequisites.end(),sortit);
vector<vector<int>> graph(numCourses);
for(auto s:prerequisites)
{
graph[s.first].push_back(s.second);
}
int *rec=new int[numCourses];
memset(rec,0,sizeof(int)*numCourses);
for(int i=0;i<numCourses;i++)
{
if(!dfs(graph,rec,i))
return false;
}
return true;
}
bool dfs(vector<vector<int>