拓撲排序 利用優先佇列

2022-05-01 15:30:15 字數 1022 閱讀 3316

#include #include 

#include

#include

using

namespace

std;

const

int maxn = 505

; vector

graph[maxn];

inttopnum[maxn], nodenum[maxn];;

intnumvertex, numedge;

//有向無環圖一定存在拓撲序

void

toposort()

//迴圈處理入度為0的節點,並賦予拓撲序

int cnt = 0

;

while(!que.empty())

} //圖中存在環則無拓撲序

if(cnt != numvertex) return

;

//如果圖並不一定是全聯通的,那麼判原圖的某一連通域中是否存在環:

for(int i=1; i<=numvertex; ++i) if(graph[i][0]) puts("

somerwhere of the graph has a cycle

");

//輸出以拓撲序排列的節點編號

for(int i=1; i<=numvertex; ++i) nodenum[topnum[i]] =i;

for(int i=1; i<=numvertex; ++i) printf("

%d%c

", nodenum[i], i==numvertex?'

\n':'

');

}

intmain()

//建圖

for(int i=1; i<=numedge; ++i)

} //拓撲排序

toposort();

} return

0;

}

優先佇列 stl 拓撲排序

time limit 1 sec memory limit 128 mb submit 169 solved 73 submit status web board 馬上要上體育課了,上體育課之前總歸是要排個隊的,ly作為班長,怎麼排隊的問題只能由她來解決,但是馬上要上課了,ly又不清楚所有人的身高,...

vijos拓撲編號(逆向拓撲排序 優先佇列)

描述h國有n個城市,城市與城市之間有m條單向道路,滿足任何城市不能通過某條路徑回到自己。現在國王想給城市重新編號,令第i個城市的新的編號為a i 滿足所有城市的新的編號都互不相同,並且編號為 1,n 之間的整數。國王認為乙個編號方案是優美的當且僅當對於任意的兩個城市i,j,如果i能夠到達j,那麼a ...

拓撲排序 優先順序佇列

description 拓撲排序,並且輸出最小字典序的乙個可能順序,採用最小優先順序佇列可以保證按最小字典序輸出。input 輸入第一行包含兩個數n,m分別表示有向無環圖的點數和邊數。接下來m行,每行兩個數ai,bi,表示圖中存在一條ai指向bi的有向邊。output 輸出n個數,每個數用空格隔開,...