Untitled

 avatar
unknown
plain_text
2 months ago
760 B
2
Indexable
class Solution {
public:
    bool canFinish(int n, vector<vector<int>>& pre) {
        vector<vector<int>> graph(n);
        // create graph
        for(auto &x: pre){
            if(x[0]==x[1]) return false;
            graph[x[1]].push_back(x[0]);
        }
        vector<bool> visited(n, false); // visited/completed courses
        
        return detectCycle(graph, visited, 0);
        
    }
    
    bool detectCycle(vector<vector<int>> graph,vector<bool> &visited, int start){
        if(visited[start]) return false;
        visited[start] = true;
        bool finish = true;
        for(int i=0;i<graph[start].size();i++){
           finish = finish && detectCycle(graph,visited,graph[start][i]); 
        }
        
        return finish;
    }
};
Editor is loading...
Leave a Comment