课程表

class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites)
{
vector<int> indegree(numCourses);
vector<vector<int>> graph(numCourses);
vector<int> v;
for (int i = 0; i<numCourses; i++)
{
indegree[i] = 0;
graph.push_back(v);
}
for (int i = 0; i<prerequisites.size(); i++)
{
indegree[prerequisites[i][0]]++;
graph[prerequisites[i][1]].push_back(prerequisites[i][0]);
}
queue<int> myqueue;
for (int i = 0; i<numCourses; i++)
{
if (indegree[i] == 0)
{
myqueue.push(i);
}
}
int k = 0;
while (!myqueue.empty())
{
int t = myqueue.front();
myqueue.pop();
++k;
for (int i = 0; i<graph[t].size(); i++)
{
indegree[graph[t][i]]--;
if (indegree[graph[t][i]] == 0)
{
myqueue.push(graph[t][i]);
}
}
}
return k == numCourses;
}
};
