Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.01 KB

14.md

File metadata and controls

47 lines (35 loc) · 1.01 KB
 vector<int> findOrder(int n, vector<vector<int>>& prerequisites) {
        
        vector<vector<int>>adj(n);
         vector<int>indegree(n,0);

        for(auto& pre : prerequisites) {
            adj[pre[1]].push_back(pre[0]);
            indegree[pre[0]]++;
        }
        
        queue<int>q;
        
        for(int i=0;i<n;i++)
            if(indegree[i]==0)
                q.push(i);
        
        int count=0;
        
        vector<int>ans;
        
        if(q.size()==0)
            return ans;
        
        while(!q.empty())
        {
            int node=q.front();
            q.pop();
            ans.push_back(node);
            count++;
            
            for(auto it: adj[node])
            {
                indegree[it]--;
                if(indegree[it]==0)
                    q.push(it);
            }
        }
    if(count!=n)
        return {};
    
    return ans;
    }