9.bfs+拓扑排序
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;
}
};

浙公网安备 33010602011771号