Skip to content

Instantly share code, notes, and snippets.

@kanrourou
Created August 21, 2017 03:34
class Solution {
public:
vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) {
if (numCourses < 1)return {};
vector<vector<int>> graph(numCourses, vector<int>());
vector<int> in(numCourses, 0), res;
for (auto p : prerequisites)
{
graph[p.second].push_back(p.first);
in[p.first]++;
}
queue<int> q;
for (int i = 0; i < numCourses; ++i)
{
if (!in[i])q.push(i);
}
while(!q.empty())
{
int curr = q.front();
q.pop();
res.push_back(curr);
for (int i : graph[curr])
{
in[i]--;
if (!in[i])q.push(i);
}
}
return res.size() == numCourses? res: vector<int>();
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment