题解
这题就是拓扑排序,也可以dfs查环,思路简单,注意下如何用数据结构表示。
可参考的英文题解含DFS/BFS
Code
class Solution {
public:
bool canFinish(int n, vectorpairint, int pres) {
vectorunordered_setint graph(n);
for(auto p:pres){
graph[p.second].insert(p.first);
}
vectorint degrees(n,0);
for(auto e:graph)
for(int k:e) degrees[k]++;
for(int i=0;in;i++){
int j;
for(j=0;jn;j++){
if(degrees[j]==0)
break;
}
if(j==n) return false;
degrees[j]=-1;
for(int k:graph[j]){
degrees[k]--;
}
}
return true;
}
};