https://blog.csdn.net/wongleetion/article/details/79433101
问题的实质就是判断一个有向图是否有环,利用入度去解决这个问题
class Solution { public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<vector<int>> graph(numCourses,vector<int>(0)); vector<int> inDegree(numCourses,0); for(auto i : prerequisites){ graph[i.second].push_back(i.first); inDegree[i.first]++; } queue<int> q; for(int i = 0;i < numCourses;i++){ if(inDegree[i] == 0) q.push(i); } while(!q.empty()){ int num = q.front(); q.pop(); for(auto i : graph[num]){ inDegree[i]--; if(inDegree[i] == 0) q.push(i); } } for(int i = 0;i < numCourses;i++){ if(inDegree[i] != 0) return false; } return true; } };
原文:https://www.cnblogs.com/ymjyqsx/p/10521750.html