由某個(gè)集合上的一個(gè)偏序得到該集合上的一個(gè)全序,這個(gè)操作被稱(chēng)為拓?fù)渑判?。偏序和全序的定義分別如下:
若集合X上的關(guān)系R是自反的、反對(duì)稱(chēng)的和傳遞的,則稱(chēng)R是集合X上的偏序關(guān)系。
設(shè)R是集合X上的偏序,如果對(duì)每個(gè)x,y∈X必有xRy或yRx,則稱(chēng)R是集合X上的全序關(guān)系。
由偏序定義得到拓?fù)溆行虻牟僮鞅闶峭負(fù)渑判颉?
拓?fù)渑判虻牧鞒倘缦拢?
1. 在有向圖中選一個(gè)沒(méi)有前驅(qū)的頂點(diǎn)并且輸出之;
2. 從圖中刪除該頂點(diǎn)和所有以它為尾的弧。
重復(fù)上述兩步,直至全部頂點(diǎn)均已輸出,或者當(dāng)前圖中不存在無(wú)前驅(qū)的頂點(diǎn)為止。后一種情況則說(shuō)明有向圖中存在環(huán)。
采用鄰接表存儲(chǔ)有向圖,并通過(guò)棧來(lái)暫存所有入度為零的頂點(diǎn),可以描述拓?fù)渑判虻乃惴ㄈ缦拢?
在本題中,讀入一個(gè)有向圖的鄰接矩陣(即數(shù)組表示),建立有向圖并按照以上描述中的算法判斷此圖是否有回路,如果沒(méi)有回路則輸出拓?fù)溆行虻捻旤c(diǎn)序列。