Course Schedule II LeetCode solution in C++
1class Solution {2public:3vector<int> findOrder(int numCourses, vector<vector<int>> &prerequisites) {4map<int, vector<int>> adj;5vector<int> indegree(numCourses, 0);6vector<int> res;7for (int i = 0; i < prerequisites.size(); i++) {8adj[prerequisites[i][1]].push_back(prerequisites[i][0]);9indegree[prerequisites[i][0]]++;10}11queue<int> q;12for (int i = 0; i < numCourses; i++) {13if (indegree[i] == 0) q.push(i);14}15while (!q.empty()) {16int x = q.front();17q.pop();18res.push_back(x);19for (auto u : adj[x]) {20indegree[u]--;21if (indegree[u] == 0) {22q.push(u);23}24}25}26if (res.size() == numCourses) return res;27return {};28}29};