207. Course Schedule

来源:互联网 发布:mac适合java开发吗 编辑:程序博客网 时间:2024/05/16 01:26
class Solution {public:    static const int VISITING = 0;    static const int VISITED = 1;    static const int NOTVISITED = 2;    bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {                int notVisited = NOTVISITED;        vector<int> stat(numCourses, notVisited);        vector<vector<int>> graph(numCourses, vector<int>());        for(const auto &i : prerequisites){            graph[i.second].push_back(i.first);        }                for(int i = 0; i < numCourses; ++i)            if(stat[i] == NOTVISITED && !dfs(stat, graph, i))                return false;        return true;    }        bool dfs(vector<int> &stat, const vector<vector<int>> &graph, int pos){        if(stat[pos] == VISITING)            return false;        stat[pos] = VISITING;        for(auto i : graph[pos]){            if(!dfs(stat, graph, i))                return false;        }        stat[pos] = VISITED;        return true;    }};


原创粉丝点击