拓撲序列唯一嗎?
比較模板的topological-sort題,關鍵在于每個元素都嚴格存在唯一的大小關系,而一般的拓撲排序只給出一個可能解,這就需要每趟排序的過程中監視它是不是總堅持一條唯一的路徑。
算法導論里面的拓撲排序運用的是DFS the DAG,記錄每個頂點的進入時間和離開時間,根據其先后插入單鏈表的做法。而我認為一種方法是更直觀的,就是維護一個入度為0的頂點集合(我用的隊列其實沒差),每次對其中一個加入結果序列——同時刪除它的所有出邊——更新其他點的入度的做法,在判斷拓撲排序結果唯一性時這種方法也表現出了一個優勢,每次訪問0入度集合時查看大小,當元素多于1的時候可行的選擇就出現了分歧——即可判定此DAG的拓撲排序不唯一。