點連通分量 邊連通分量 割點和橋 強連通分量

2021-06-23 03:59:03 字數 905 閱讀 9795

老是搞不清他們的關係,不知道該用那份**,今天理了一下,整理一下模板

點連通分量:可以求出點連通分量包含哪些點,那個點屬於那個連通分量

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 圖的鄰...