簡單的拓撲排序模板

2021-07-05 04:53:28 字數 702 閱讀 2890

拓撲排序

一.定義

通常,這樣的線性序列稱為滿足拓撲次序(topological order)的序列,簡稱拓撲序列。

注意:1)只有有向無環圖才存在拓撲序列;

2)對於乙個dag,可能存在多個拓撲序列;

如:

二.拓撲序列演算法思想

(1)從有向圖中選取乙個沒有前驅(即入度為0)的頂點,並輸出之;

(2)從有向圖中刪去此頂點以及所有以它為尾的弧;

重複上述兩步,直至圖空,或者圖不空但找不到無前驅的頂點為止。

三.**實現

採用鄰接矩陣實現,map[i][j]=0,表示節點i和j沒有關聯;map[i][j]=1,表示存在邊,並且j的入度加1;

#include#include#include#define max 100

usingnamespace std;

void toposort(int map[max][max],int indegree[max],int n)

{ int i,j,k;

for(i=0;i

拓撲排序模板

include include include include include using namespace std const int maxn 30 int head maxn ip,indegree maxn int n,m,seq maxn struct note edge maxn ma...

模板 拓撲排序

拓撲排序 將 小於 關係看做有向圖,形成一條排好序的關係,可能不唯一。queue實現,vector儲存 const int maxn 10005 int in maxn sum,n,m,fa maxn vectorg maxn void init void toposort 按字典序輸出 改為pri...

拓撲排序模板

演算法步驟 1.從aov網中選擇乙個沒有前驅的頂點 該定點的入度為0 並且輸出它 2.從aov網中選刪除該頂點,並且刪除以該頂點為尾的全部有向邊。3.重複上述兩步,知道剩餘的網中不再存在沒有直接前驅的頂點為止。hdu1285 include include include include inclu...