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;     
    }
};

  

原文地址:https://www.cnblogs.com/apo2019/p/13278754.html