LeetCode207. Course Schedule課程表原題鏈接
Key: 非常淳樸的拓撲排序
題意是:某些課程在修讀之前需要完成其先修課程,給出所有課程之間的關係,判斷是否能完成修讀所有課程
那麼就是判斷這個課程關係圖是否是拓撲圖,沒什麼特別的地方,只需要用個淳樸的拓撲排序即可。
以前做過一道題意一毛一樣的:HihoCoder-1174 以後興趣的可以看一眼
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
int in[5001] = {0}; //入度
for(int i = 0; i < numCourses; i++)
in[i] = 0;
int length = prerequisites.size();
for(int i = 0; i < length; i++){
in[prerequisites[i][1]] ++ ;
}
queue<int> que;
for (int i = 0; i < numCourses; i++)
{
if (in[i]==0)
{
que.push(i);
//cout<<i<<"**"<<endl;
}
}
int count = 0;
while(!que.empty())
{
int u = que.front();
//cout<<u<<"pop"<<endl;
que.pop();
count++;
for(int i = 0; i < length; i++)
{
if(prerequisites[i][0] == u){
int v = prerequisites[i][1];
in[v]--;
if(in[v]==0)
{
que.push(v);
}
}
}
}
if(count == numCourses)
return true;
else
return false;
}
};