經典演算法之拓撲排序

2021-09-26 02:25:31 字數 736 閱讀 9155

傳送門

#include using namespace std;

#define n 13

int main()

}int a,b; //定義兩個變數,用來輸入

int v,l; //頂點數和邊數

cout << "請輸入頂點數:";

cin >> v;

cout << "請輸入邊數:";

cin >> l;

cout << "請輸入邊:" << endl;

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

cout << "鄰接矩陣如下所示\n" << endl;

for(int i = 1; i <= n-1; i++)

cout << endl;

}int k; //用於計算度數

int id[n]; //用於存放入度

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

id[i] = k;

}//1、在有向圖中選乙個沒有前驅的頂點並且輸出

cout << "\n\n拓撲序列: ";

int count = 0; //最後用來判斷是否所有的頂點輸出

while(1)}}

}//3、重複上述兩步,直至全部頂點均已輸出;或者當圖中不存在無前驅的頂點為止。

if(count == v)

}return 0;

}

經典拓撲排序模板

拓撲排序是圖論中一種典型的演算法。通過拓撲排序可以梳理圖的層次結構。像什麼工期完成類的圖論任務,就是典型的應用。第二個應用就是判斷圖中是否存在環路的問題。程式中建圖的方式是鄰接表形式,如下 vector graph n,vector 下面是拓撲排序的模板 vector graph n,vector ...

拓撲排序演算法

對許多資料結構教材實在不滿意,至少我是看不懂 至於拓撲排序演算法,教材上那些偽 真真教人頭暈。只寫了幾個struct結構,我根本看不出這是鄰接表。如果給出乙個清晰明了的圖,一切不就簡單了?總之,關鍵就是建立乙個鄰接表。然後利用這個表進行拓撲排序。邊表結點宣告 typedef struct edgen...

拓撲排序演算法

對乙個 有向無環圖 directed acyclic graph簡稱dag g進行拓撲排序,是將g中所有頂點排成乙個線性序列,使得圖中任意一對頂點u和v,乙個有向無環圖的拓撲序列不是唯一的 進行拓撲排序的演算法並不複雜 1 在有向圖中選乙個沒有前驅 入度為0 的頂點且輸出之 2 從圖中刪除該頂點及它...