Course Schedule II Posted on 2018-10-06 Descriptionhttps://leetcode.com/problems/course-schedule-ii/description/ Solution123456789101112131415161718192021222324252627282930313233343536class Solution {public: vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> degree(numCourses, 0); vector<vector<int>> graph(numCourses, vector<int>() ); vector<int> ret; for (auto& pa : prerequisites) { degree[pa.first] += 1; graph[pa.second].push_back(pa.first); } queue<int> waitingList; for (int i = 0; i < numCourses; ++i) { if (degree[i] == 0){ waitingList.push(i); ret.push_back(i); } } while (!waitingList.empty()) { int item = waitingList.front(); waitingList.pop(); vector<int>& lis = graph[item]; for (int item : lis) { --degree[item]; if (degree[item] == 0) { waitingList.push(item); ret.push_back(item); } } } for (int i = 0; i < numCourses; ++i) if (degree[i] != 0) return vector<int>(); return ret; }};