老是搞不清他們的關係,不知道該用那份**,今天理了一下,整理一下模板
點連通分量:可以求出點連通分量包含哪些點,那個點屬於那個連通分量
struct edge
; int pre[maxn],iscut[maxn],bccno[maxn],dfs_clock,bcc_cnt;
vectorg[maxn],bcc[maxn];
stacks;
int n;
int dfs(int u,int fa)
if(bccno[x.v]!=bcc_cnt)
if(x.u==u&&x.v==v)break;
} }
} else if(pre[v]邊連通分量:點連通分量是找到乙個割點後,把棧裡的點劃分到聯通分量裡,而邊連通分量是所有孩子處理完了,才劃分
struct edge
; int pre[maxn],low[maxn],iscut[maxn],bccno[maxn],dfs_clock,bcc_cnt;
int deg[maxn];
vectorgrid[maxn],bcc[maxn];
stacks;
void dfs(int u,int fa)
else if(pre[v]有向圖強連通分量:
vectorgrid[maxn];
int lowlink[maxn],pre[maxn],sccno[maxn],dfs_clock,scc_cnt;
stacks;
void dfs(int u)
割點,橋,點 邊雙連通分量模版
根結點為割點當其有至少2個兒子 非根結點u為割點當存在子結點v的low v dfn u 在dfs樹中,v是u的兒子,邊 u,v 為橋當low v dfn u struct e edge maxm int head maxn tol inline void addedge int u,int v in...
學習整理 Tarjan 強連通分量 割點 割邊
tarjan求強連通分量 在乙個有向圖中,如果某兩點間都有互相到達的路徑,那麼稱中兩個點強聯通,如果任意兩點都強聯通,那麼稱這個圖為強聯通圖 乙個有向圖的極大強聯通子圖稱為強聯通分量。演算法可以在 的時間內求出乙個圖的所有強聯通分量。表示進入結點 的時間 表示從所能追溯到的棧中點的最早時間 如果某個...
強連通分量 tarjan求強連通分量
雙dfs方法就是正dfs掃一遍,然後將邊反向dfs掃一遍。挑戰程式設計 上有說明。雙dfs 1 include 2 include 3 include 4 include 5 6using namespace std 7const int maxn 1e4 5 8 vector g maxn 圖的鄰...