题目:
解题方法:拓扑排序
截图代码
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites)
{
map<int,set<int>>mp;
vector<int>indegree(numCourses+1,0);
for(auto v:prerequisites)
{
int a=v[1];
int b=v[0];
mp[a].insert(b);
++indegree[b];
}
queue<int>que;
for(int i=0;i<numCourses;i++)
{
if(indegree[i]==0)
que.push(i);
}
int count=0;
while(!que.empty())
{
int v=que.front();
que.pop();
++count;
auto x=mp[v];
for(auto t:x)
{
indegree[t]--;
if(indegree[t]==0)
{que.push(t);}
}
}
return count==numCourses;
}
};