Course Schedule LeetCode solution in C++

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

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0