mirror of https://github.com/doocs/leetcode.git
30 lines
833 B
C++
30 lines
833 B
C++
class Solution {
|
|
public:
|
|
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
|
|
vector<vector<int>> g(numCourses);
|
|
vector<int> indeg(numCourses);
|
|
for (auto& p : prerequisites) {
|
|
int a = p[0], b = p[1];
|
|
g[b].push_back(a);
|
|
++indeg[a];
|
|
}
|
|
queue<int> q;
|
|
for (int i = 0; i < numCourses; ++i) {
|
|
if (indeg[i] == 0) {
|
|
q.push(i);
|
|
}
|
|
}
|
|
vector<int> ans;
|
|
while (!q.empty()) {
|
|
int i = q.front();
|
|
q.pop();
|
|
ans.push_back(i);
|
|
for (int j : g[i]) {
|
|
if (--indeg[j] == 0) {
|
|
q.push(j);
|
|
}
|
|
}
|
|
}
|
|
return ans.size() == numCourses ? ans : vector<int>();
|
|
}
|
|
}; |