排課表 拓撲排序 自己寫的拓撲排序方法 1

2021-09-02 02:46:23 字數 1039 閱讀 2989

現在你總共有 n 門課需要選,記為0n-1

在選修某些課程之前需要一些先修課程。 例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用乙個匹配來表示他們:[0,1]

給定課程總量以及它們的先決條件,返回你為了學完所有課程所安排的學習順序。

可能會有多個正確的順序,你只要返回一種就可以了。如果不可能完成所有課程,返回乙個空陣列。

示例 1:

輸入:2, [[1,0]]輸出:[0,1]解釋:總共有 2 門課程。要學習課程 1,你需要先完成課程 0。因此,正確的課程順序為[0,1] 。
示例 2:

輸入:4, [[1,0],[2,0],[3,1],[3,2]]輸出:[0,1,2,3] or [0,2,1,3]解釋:總共有 4 門課程。要學習課程 3,你應該先完成課程 1 和課程 2。並且課程 1 和課程 2 都應該排在課程 0 之後。

因此,乙個正確的課程順序是[0,1,2,3]。另乙個正確的排序是[0,2,1,3]

說明:

輸入的先決條件是由邊緣列表表示的圖形,而不是鄰接矩陣。詳情請參見圖的表示法

。你可以假定輸入的先決條件中沒有重複的邊。

這個問題相當於查詢乙個迴圈是否存在於有向圖中。如果存在迴圈,則不存在拓撲排序,因此不可能選取所有課程進行學習。

通過 dfs 進行拓撲排序

拓撲排序也可以通過 bfs

完成。

class solution 

// coutreturn res2;

}}};

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...

python 排序 拓撲排序

在電腦科學領域中,有向圖的拓撲排序是其頂點的先行排序,對於每個從頂點u到頂點v的有向邊uv,在排序的結果中u都在v之前。如果圖是有向無環圖,則拓撲排序是可能的 為什麼不說一定呢?圖論 是組合數學的乙個分支,它和其他分支比如 群論 拓撲學 矩陣論有著密切的關係。圖是圖論的主要研究物件。圖是由若干給定的...

拓撲排序 kahn演算法及dfs的拓撲排序

有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。給出每個人的孩子的資訊。輸出乙個序列,使得每個人的後輩都比那個人後列出 sample input 5 0 4 5 1 0 1 0 5 3 0 3 0樣例輸出 sample output 2 4 5 3 1 因為需輸出字典序最小的因而要使用優先...