拓撲排序 演算法模板

2021-07-25 20:32:58 字數 925 閱讀 7487

有乙個有向圖(aov網)如下:

遍歷方法:

每次找入度為0的節點,找到後刪除該節點和該節點的出度邊.

在新的aov網中(刪除某些節點和邊後) 重複這個過程

在這個圖中遍歷為

第一步: 0

第二步: 1 或 2

第三步: 4

第四步:3 或 6

第五步:5

第六步:7

共有4種不同拓撲序列

拓撲序列反映那些工程得先完成,那些工程得後完成。

**:

#include

#include

#include

using

namespace

std;

/***************類宣告*********/

class graph

;/***********類定義****************/

graph::graph(int v)

graph::~graph()

void graph::addedge(int v,int w)

bool graph::topological_sort()

if(count < v)

return

false;

else

return

true;

}int main()

執行結果為

0 1 2 4 3 6 5 7

驗證確是拓撲排序中的一種.

然而這只是基礎模板,實際演算法題會在模板上更變.

一道拓撲排序題hdu2647

可以用模板練練手.

拓撲排序模板

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...