拓撲排序(只適用於aov網(有向無環圖))
運用 : 事務先後(非唯一)
拓撲排序思路:
選擇乙個入度為 0 的點 並輸出
從aov網中刪除此頂點以及此頂點為起點的所有關聯邊
重複上述兩步,直到不存在入度為0的頂點為止
如果書粗糙頂點數小於aov網中的頂點數,則輸出「有迴路資訊」,否則輸出的頂點序列就是一種拓撲排序
演算法實現:
資料結構: indgr[i] : 頂點i的入度;
stack : 棧
初始化 : top = 0 (棧頂指標置零)
將初始化狀態所有的入度為0的頂點壓棧
i = 0 (計數器)
while( !q.empty() ) ( top > 0 )
i : 棧頂的頂點 v 出棧 ; top - 1; 輸出 v; i++;
ii : for ( v 的每乙個後繼頂點 u )
1. indgr[u]–; u 的入度減一
2. if indgr == 0 頂點 u 入棧
#include
#include
#include
#include
#include
#include
#define n 10001
using
namespace std;
int n,m;
int in[n]
;//節點入度
vector<
int> g[n]
;//g[i]表示i節點所指向的所有其他點
bool
judgetopsort()
//判斷該圖是否可拓撲排序}if
(cnt==n)
//aov網點數等於圖的點數,不存在環,可進行拓撲排序
return
true
;else
//aov網點數等於圖的點數,存在環,不可進行拓撲排序
return
false;}
intmain()
printf
("%s\n"
,judgetopsort()
?"yes"
:"no");
}return0;
}
#include
#include
#include
#include
#include
#include
#define n 10001
using
namespace std;
int n,m;
int in[n]
;//節點入度
int path[n]
;//儲存路徑
vector<
int> g[n]
;//g[i]表示i節點所指向的所有其他點
void
topsort()
//拓撲排序}}
intmain()
topsort()
;for
(int i=
1;i<=n;i++
)printf
("%d "
,path[i]);
printf
("\n");
}return0;
}
#include
#include
#include
#include
#include
#include
#define n 10001
using
namespace std;
int n,m;
int in[n]
;//節點入度
int path[n]
;//儲存路徑
vector<
int> g[n]
;//g[i]表示i節點所指向的所有其他點
void
topsort()
//拓撲排序}}
intmain()
topsort()
;for
(int i=
1;i<=n;i++
)printf
("%d "
,path[i]);
printf
("\n");
}return0;
}
legal or not(hdu-3342):
******** love(hdu-4324):
genealogical tree(poj-2367)(輸出任一條拓撲排序結果):
確定比賽名次(hdu-1285)(輸出字典序最小的拓撲排序結果):
following orders(poj-1270)(按字典序輸出所有拓撲排序結果):
煩人的幻燈片(資訊奧賽一本通-t1395)(拓撲排序思想)
家譜樹(資訊奧賽一本通-t1351)(構造拓撲排序):
獎金(資訊奧賽一本通-t1352)(構造拓撲排序)
cow traffic(poj-3272)(雙向拓撲排序):
ponds(hdu-5438)(拓撲排序刪點+dfs):
病毒(資訊奧賽一本通-t1396)(給出字典序,找出拓撲排序關係):
**座的比賽資格(2019牛客寒假演算法基礎集訓營 day3-b)(拓撲排序求最短路):
sorting it all out(poj-1094)(拓撲排序+差分約束系統):
labeling balls(poj-3687)(拓撲排序+逆向思維):
拓撲排序與關鍵路徑
什麼是拓撲排序 設g v,e 是乙個具有n個頂點的有向圖,v中頂點序列v1,v2,vn,稱為乙個拓撲序列,當且僅當該頂點序列滿足下列條件 若是圖中的邊 或從頂點i到j有一條路徑 則在拓撲序列中頂點i必須排在頂點j之前。在乙個有向圖中找 乙個拓撲序列的過程稱為拓撲排序。拓撲排序步驟 1 從有向圖中選擇...
拓撲排序,關鍵路徑
拓撲排序 對於乙個流程圖,可以用頂點表示活動,弧表示活動間的優先關係,這樣所表示的有向圖稱為頂點表示活動的網,即aov網。在網中,如果頂點i到頂點j有一條有向路徑,或者 i,j 是一條弧,則i是j的前驅,j是i的後繼。aov網中不應該出現環。拓撲排序的思想很簡單,1 在有向圖中選乙個沒有前驅的頂點輸...
拓撲排序 關鍵路徑
功能function description hdoj 2094 開發環境environment dev c 4.9.9.1 技術特點technique 版本version 作者author 可笑痴狂 日期date 20120812 備註notes 策略問題 一 本來想先用字典樹給名字編號,然後用建...