207. Course Schedule
2017-09-11 08:31
267 查看
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; } };
相关文章推荐
- LeetCode *** 207. Course Schedule (Topological Sort )
- 207. Course Schedule
- 207. Course Schedule
- 第十二周 leetcode 207. Course Schedule(Medium)
- 207. Course Schedule
- 【LeetCode】207. Course Schedule (2 solutions)
- Leetcode 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- [LeetCode]207. Course Schedule
- 207. Course Schedule
- Leetcode:207. Course Schedule
- 207. Course Schedule
- (M)DFS:207. Course Schedule
- leetcode- 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule(Graph; BFS)
- 207. Course Schedule 图的dfs算法
- 207. Course Schedule
- 第四周:[Leetcode]207. Course Schedule