当前位置:   article > 正文

C++ | Leetcode C++题解之第207题课程表

C++ | Leetcode C++题解之第207题课程表

题目:

题解:

  1. class Solution {
  2. private:
  3. vector<vector<int>> edges;
  4. vector<int> indeg;
  5. public:
  6. bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
  7. edges.resize(numCourses);
  8. indeg.resize(numCourses);
  9. for (const auto& info: prerequisites) {
  10. edges[info[1]].push_back(info[0]);
  11. ++indeg[info[0]];
  12. }
  13. queue<int> q;
  14. for (int i = 0; i < numCourses; ++i) {
  15. if (indeg[i] == 0) {
  16. q.push(i);
  17. }
  18. }
  19. int visited = 0;
  20. while (!q.empty()) {
  21. ++visited;
  22. int u = q.front();
  23. q.pop();
  24. for (int v: edges[u]) {
  25. --indeg[v];
  26. if (indeg[v] == 0) {
  27. q.push(v);
  28. }
  29. }
  30. }
  31. return visited == numCourses;
  32. }
  33. };
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号