拓撲排序
一.定義
通常,這樣的線性序列稱為滿足拓撲次序(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...