Skip to content

Latest commit

 

History

History
35 lines (31 loc) · 787 Bytes

File metadata and controls

35 lines (31 loc) · 787 Bytes
class Solution {
public:
  
    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
        vector<vector<int>> graph(numCourses);
        vector<int> pre(numCourses, 0);
        for(const auto& it : prerequisites){
            graph[it[1]].push_back(it[0]);
            pre[it[0]]++;
        }
        int n = numCourses;
        queue<int> q;
        for(int i=0;i<numCourses;i++){
            if(pre[i]==0)
                q.push(i);
        }

        while(!q.empty()){
            int cur = q.front();
            q.pop();
            for(int next : graph[cur]){
                pre[next]--;
                if(pre[next] == 0){
                    q.push(next);
                }

            }

            n--;
        }
        return n==0;
    }
};