課程表
題意:
那個有序的任務能否產生合法調度:有向圖是否存在環。
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>> graph(numCourses+1);
vector<int> f(numCourses+1,0);
for(auto& e:prerequisites){
graph[e[0]].push_back(e[1]);
f[e[1]]++;
}
queue<int> q;
vector<int> ans;
for(int i=0;i<numCourses;i++){
if(!f[i]){
q.push(i);
}
}
while(!q.empty()){
int x = q.front();
q.pop();
ans.push_back(x);
for(int y:graph[x]){
if(--f[y]==0){
q.push(y);
}
}
}
return ans.size()==numCourses;
}
};