有向圖強連通分支
定義
在有向圖G中,如果任意兩個不同的頂點相互可達,則稱該有向圖是強連通的。有向圖G的極大強連通子圖稱為G的強連通分支。
Tarjan演算法
dfn[i]表示編號為i的節點在DFS過程中的訪問序列(也可以叫做開始時間)。在DFS過程中會形成一搜尋樹。在搜尋樹上越先遍歷到的節點,dfn值越小
low[i]表示從i節點出發DFS過程中i下方結點(開始時間大於dfn[i],且由i可達的節點)所能到達的最早的節點的開始時間,初始時dfn[i]=low[i]
void Tarjan(int u)
{
dfn[u]=low[u]=++index;
stack.push(u);
for each(u,v) in E{
if(v is not visted){
tarjan(v);
low[u]=min(low[u],low[v];)
}
else if(v in stack)
low[u]=min(low[u],dfn[v]);
}
if(dfn[u]==low[u]){ //u是一個強連通分量的根
do{
v=stack.pop
print v
標記v不在棧中
}while(u!=v)//退棧,把整個強連通分量都彈出來
}
}//複雜度O(E+V)
問題集錦:
相關文章
- 有向圖的連通性(判強連通)
- 有向圖的強連通性(java)Java
- 有向圖的強連通分量 模版
- Tarjan 求有向圖的強連通分量
- UVA-11504 - Dominos(有向圖的強連通分量)
- 無向連通圖點雙連通分量
- 無向連通圖邊雙連通分量
- 無向連通圖求割點和橋
- 圖 - 有向圖
- 抓間諜(強連通)
- 圖論-有向圖縮點圖論
- The Bottom of a Graph-POJ2553強連通
- 最大半連通子圖
- SSL_1758【連通圖】
- 判斷一個有向圖是否有環
- 有向圖的拓撲排序——DFS排序
- 連通圖與Tarjan演算法演算法
- 【筆記/模板】無向圖的雙連通分量筆記
- 圖論——強連通分量(Tarjan演算法)圖論演算法
- 拓撲排序 (BFS )DAG (有向無環圖)排序
- 用SQL解決有向圖問題(轉)SQL
- git 強制拉取master分支程式碼GitAST
- 圖-無向圖
- 有向圖的基本演算法-Java實現演算法Java
- APEX重定向頁(通過分支判斷)
- this指向(連線上下文)···有圖解圖解
- 軟考筆記-有向圖的鄰接矩陣筆記矩陣
- 連結串列-雙向連結串列
- 連結串列 - 單向連結串列
- 03-邏輯學有哪些分支?
- UDP雙向通訊UDP
- 雙向連結串列
- P2272 [ZJOI2007] 最大半連通子圖
- 前端如何通過連結去下載img圖片前端
- [簡易版]有向無環圖(DAG)前端視覺化前端視覺化
- Python 圖_系列之基於<連結表>實現無向圖最短路徑搜尋Python
- 連結串列-雙向通用連結串列
- HTTPS連線建立過程(單向&雙向)HTTP