Kahn演算法拓撲排序

2022-03-20 01:06:57 字數 597 閱讀 9347

1. 概念及規則

規則:圖中每個頂點只出現一次。

ab前面,則不存在ba前面的路徑。(否則就會形成環)

頂點的順序是

保證所有指向它的下個節點在被指節點前面

2. 演算法及實現

kahn演算法

#include using namespace std;

csont int maxn = 10005;

struct edgee[maxn];

int n, m, len, head[maxn], rd[maxn], a[maxn];

void insert(int x, int y)

void kahn()

}if(cnt < n)//出棧次數小於n,有環

for(int i=1; i<=cnt; i++) printf("%d ", a[i]);

}int main()

kahn();

return 0;

}

拓撲排序 Kahn演算法

該演算法的關鍵在於需要維護乙個入度為0的頂點的集合 每次從該集合中取出 如果要求輸出時編號小的在前,可以用優先佇列儲存集合 乙個頂點,將該頂點放入儲存結果的 list中。緊接著迴圈遍歷由該頂點引出的所有邊,從圖中移除這條邊,同時獲取該邊的另外乙個頂點,如果該頂點的入度在減去本條邊之後為0,那麼也將這...

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

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

HDU 1258 拓撲排序Kahn演算法

問題概述 有n個比賽隊,編號為從1到n,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在 裁 判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2 用p1 p2表示 這種,排名時p1在 必 須在p2之前,現在請你程式設計序確定排名 答案不止一種,按照隊伍從小到大排列...