模板 拓撲排序

2021-08-08 20:56:09 字數 630 閱讀 6057

拓撲排序:將「小於」關係看做有向圖,形成一條排好序的關係,可能不唯一。

queue實現,vector儲存:

const int maxn=10005;  

int in[maxn],sum,n,m,fa[maxn];  

vectorg[maxn];  

void init()  

void toposort()

按字典序輸出:

改為priority_queue即可。

const int maxn=10005;

int in[maxn],sum,n,m,ans[maxn];

bool visit[maxn][maxn];

vectorg[maxn];

void init()

void toposort()

while(!s.empty()){

int pos=s.top();

s.pop(),sum--;

ans[cnt--]=pos;     //從大到小放入陣列,倒著放。

for(int i=0;i0) printf("-1\n");   //有環,sum無法--

else{

for(int i=1;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...

拓撲排序模板

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

拓撲排序 模板

topsort 只適用於有向無環圖 關鍵思想 每次找只有出邊的點,刪掉該點和他所有的出邊 拓撲內部的記錄關鍵路徑的過程需要根據題意修改 by acermo include include include include include include includeusing namespace s...