(鬼 知 道 剛 學 這 破 玩 意 的 時 候 我 有 多 絕 望,現在再回來學,嗯! 真 可 愛 )
拓撲序有以下幾個特點
每個點都有入度和出度,當某點入度為0時,則沒有指向它的邊,由拓撲序的第二條特點得出,這時沒有點必須排在它的前面,於是將它加入拓撲序,就相當於在原圖中刪掉這個點,該點指向的所有點入度減一,重複此過程,直到所有點都加入了拓撲序
(圖源見水印)
敲完演算法思想之後我自己都暈咳咳咳,我們來手動模擬一下上面那個圖(我 最 喜 歡 手 動 模 擬 數 據 了 !
)初始圖就是(a),圖中入度為0的點是 1,6,所以1,6入隊,這時的隊(拓撲序)為(順序無所謂,我是為了配合圖)
從隊首開始,刪掉隊首點,將隊首連出的邊都刪掉,相連的點入度-1,於是就得到了(b),6出隊,此時的隊列為
重複上一步,最後得到出隊的順序就是拓撲序
我在我平時用的幾個oj上,我實在是沒找到純裸題qwq,就直接自己敲了乙個裸**
#includeusing namespace std;
int rd[10100],cd[10100],n,m,p[10100][10100],q[1010];
int main()
int l=1;
int r=0;//佇列的左右端點
for (int i=1;i<=n;i++)
if (rd[i]==0)
//如果點i的入度為0,那麼就把r入隊,佇列右端點++
int cnt=n;
while (cnt!=0)//當所有點都輸出了之後,迴圈結束
}printf("%d ",q[l]);
cnt--;
l++;
} return 0;
}
洛谷1983 車站分級的傳送門 呼——這道題比較裸,可以練手用
好啦好啦寫完啦【完結撒花✿✿ヽ(°▽°)ノ✿】
我痛恨 Git 的 10 個理由
2012年03月10日 git 是乙個源 版本控制系統,正在迅速成為開源專案的標準。它有乙個強大的分布式模型,允許高階使用者用分支來處理各種棘手的問題和改寫歷史記錄。但是,要學習 git 是需要付出更多的努力,讓人不爽的命令列介面以及 git 是如此的忽視它的使用者。下面是我為什麼如此痛恨 git ...
和大家分享一下我近期最痛恨的「三件」事情
和大家分享一下我近期最痛恨的 三件 事情。第一件 email.很早以前,我的大老闆說過,雖然我們做了email 但是不鼓勵大家用。工程師整天是寫 的,pm寫文件,tester寫case,sales寫ppt 只有每天不直接創造生產力的老闆才寫email email通常是用做商業溝通的,是可以作為證據的...
拓撲排序 kahn演算法及dfs的拓撲排序
有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。給出每個人的孩子的資訊。輸出乙個序列,使得每個人的後輩都比那個人後列出 sample input 5 0 4 5 1 0 1 0 5 3 0 3 0樣例輸出 sample output 2 4 5 3 1 因為需輸出字典序最小的因而要使用優先...