图
拓扑:
课程表,课程表II
cpp
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
int n=numCourses,cnt=0;
vector<int> du(n);
vector<vector<int>> e(n);
queue<int> q;
for (auto a:prerequisites){
int x=a[1],y=a[0];
e[x].push_back(y);
du[y]++;
}
for (int i=0;i<n;i++){
if (du[i]==0){
cnt++;
q.push(i);
}
}
while (!q.empty()){
int u=q.front();
q.pop();
for (auto v:e[u]){
du[v]--;
if (!du[v]){
cnt++;
q.push(v);
}
}
}
return cnt==n;
}
};