題目描述:
思路:拓撲排序,x1,x2,...xn,x1始終出現在xn的前面,不能出現在xn的後面,即不能存在環,就是一種拓撲排序。
給定乙個包含n個節點的有向圖g,我們給出它的節點編號的一種排列,如果滿足:對於圖g中的任意一條有向邊(u,v),u在排列
中都出現在v的前面。那麼稱該排列是圖g的「拓撲排序」。
在本題中,對圖進行一遍深度優先搜尋。當每個節點進行回溯的時候,我們把該節點放入棧中。最終從棧頂到棧底的序列就是一
中拓撲排序。
class solution
//如果搜尋中,說明找到了環
else if(visited[v]==1)
}//將結點標記為已完成
visited[u]=2;
//將節點入棧
result.push_back(u);
}vectorfindorder(int numcourses, vector>& prerequisites)
//每次挑選乙個未搜尋的節點,進行深度優先搜尋
for(int i=0;i
if(!valid)
return {};
//將陣列反序輸出
reverse(result.begin(),result.end());
return result;}};
LeetCode題解 210 課程表 II
現在你總共有 n 門課需要選,記為 0 到 n 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,返回你為了學完所有課程所安排的學習順序。可能會有多個正確的順序,你只要返回一種就可以了。如果不可能完...
LeetCode 210 課程表 II 中等
現在你總共有 n 門課需要選,記為 0 到 n 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,返回你為了學完所有課程所安排的學習順序。可能會有多個正確的順序,你只要返回一種就可以了。如果不可能完...
題207 課程表
你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?統計課程安排圖中每個節點的入度...