拓撲序列以及排序

2021-08-04 11:11:51 字數 1132 閱讀 7763

一句話題意:求aov網的拓撲序列,輸出按字典序最小的乙個。

拓撲排序 :

由aov網構造拓撲序列的拓撲排序演算法主要是迴圈執行以下兩步,直到不存在入度為0的頂點為止。

(1) 選擇乙個入度為0的頂點並輸出之;

(2) 從網中刪除此頂點及所有出邊。

方案一,用鄰接矩陣來儲存圖,時間複雜度為 o(n * n),因為**簡單就不貼出來了。

想了想又貼出來了

#include#define maxn 1000

using namespace std;

int book[maxn][maxn],du[maxn];

int n,m,x,y;

void topusort()

topusort();

return 0;

}

方便你們理解~

方案二,用優先佇列以及前向星來儲存時間複雜度為 o(n+e)

證明過程:n頂點

e條弧向圖言建立求各頂點入度間複雜度

o(e)

;建零入度頂點棧間複雜度

o(n)

;拓撲排序程若向圖環則每頂點進棧、棧入度減1操作

while

語句總共執行

e所總間複雜度

o(n+e)

我在**中還加了運算子過載,struct cmp函式其實等同於greater,不會用也沒有關係

#includeusing namespace std;

struct edge

;struct edge edge[20000];

int book[2000];

int n,m;

int head[2000];

int cnt=0;

void add(int x,int y)

struct cmp

};void toposort(int n)

int k=1;

while(!que.empty())

//判斷重邊

if(!ok)

add(x,y);

} toposort(n);//n個點

return 0;

}

AOV網路 拓撲排序 拓撲序列

aov網是有向圖的一類應用,在aov網中,用頂點表示某個有一定規模的 工程 裡的不同活動,用圖中的邊表示各項活動之間的先後順序關係。一種常見的aov網例項是大學課程的先修關係,以下 列出了計算機專業若干課程及其先修課程 課程編號 課程名稱 先修課程 c1高等數學 c2程式設計基礎 c3資料結構 c1...

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...

模板 拓撲序列

拓撲序列有很多用途,比如判環,將樹上 圖上的問題轉化為序列上的問題再處理等等 尋找過程就是不斷找入度為0的點新增到q尾部 如果得到的拓撲序列長度不等於n 則說明有環 void toposort int n while q.empty 例題 可達性統計 此題可以用拓撲序 暴力合併解決 原因 題目給出了...