class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { int n=0; queue<int> s; vector<int> h[numCourses],indeg(numCourses); for(auto e:prerequisites){ h[e[0]].push_back(e[1]); indeg[e[1]]++; } for(int i=0;i<numCourses;i++){ if(indeg[i]==0)s.push(i); } while(!s.empty()){ int top=s.front();s.pop(); n++; for(int i=0;i<h[top].size();i++){ int back=h[top][i]; indeg[back]--; if(indeg[back]==0)s.push(back); } } return n==numCourses; } };