LeetCode 207. 課程表 (拓補排序入門例題)

課程表
題意:
那個有序的任務能否產生合法調度:有向圖是否存在環。

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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章