#include
#include
#include
#include
#include
#include
#include
#include
#define fast ios::sync_with_stdio(false)
#define ll long long
using
namespace std;
const
int n =
1e5+10;
int head[n]
,tot,st[n]
,n,m,indegree[n]
;stack<
int> s;
// 用來存當前入度為0的頂點的序號
struct eedge[n]
;void
add(
int a,
int b)
// 讀入邊的操作
intfind_du
(void
)// 遍歷確定圖中每乙個點的入度 }}
vector<
int>
topsort()
}// 先存入初始的時候度就為 0 的點
int count =0;
// 用來記錄當前確定了拓撲序列的點的數目
vector<
int> ans;
while
(!s.
empty()
)// 每次取出乙個入度為0的點,同時刪去與這個點有關的所有邊,創造新的入度為0的邊 }if
(count == n)
// 這個圖中的所有的頂點都可以確定其的拓撲序列位置
else
}int
main
(void
)find_du()
; vector<
int> top =
topsort()
;for
(auto it : top) cout << it <<
" ";
return0;
}
鏈式前項星
存圖,存鍊錶的時候都一般會使用這個結構體陣列來實現資料的儲存。結構體實現 struct eedge max size edge tot 是乙個空節點 int tot,head max size tot是記憶體池指標,指向的是最近的乙個還沒有被使用的記憶體區域 head陣列裡面裝的是下標對應的edge...
拓撲排序(鏈式前向星 佇列實現)
拓撲排序 對於有向無環圖的排序,對於乙個有向無環圖來說,拓撲排序就是講該圖中的所有定點排成乙個線性順序。使得途中任意一對定點u和v,若存在邊關係,u在v之前。實現思路 1 從圖中選擇乙個入度為0的頂點,並輸出他 2 從圖中刪除該點,並且刪除該定點出發的所有有向邊 3 重複上述兩步 如下 includ...
python 拓撲排序 Python 拓撲排序
python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...