pku 2117 tarjan演算法求割點

2021-09-08 02:51:26 字數 775 閱讀 3801

給出乙個森林,求刪掉乙個點後,形成的連通塊的個數。和pku1523一樣的意思,只不過這裡是森林了。。還要加上原來的連通塊數。

注意:這裡的當m == 0 時要單獨考慮,因為要刪掉乙個點,所以== n-1 而單純的求的話是n了。。。

#include 

#include

#include

#define maxn 10010

using

namespace std;

struct node

g[4*maxn];

int low[maxn],dfn[maxn],cut[maxn],head[maxn];

int t,index,n;

int root,rtson,ans;

void add(int u,int v)

void init()

t = 1;

index = ans = 0;

}void tarjan(int i)

}else

}ans = max(ans,cut[i]);

}void solve()

cut[root] = rtson - 1;

ans = max(cut[root],ans);

}printf("

%d\n

",ans + count);

}int main()

init();

for (i = 0; i < m; ++i)

solve();

}}

pku 2117 tarjan演算法求割點

給出乙個森林,求刪掉乙個點後,形成的連通塊的個數。和pku1523一樣的意思,只不過這裡是森林了。還要加上原來的連通塊數。注意 這裡的當m 0 時要單獨考慮,因為要刪掉乙個點,所以 n 1 而單純的求的話是n了。view code include include include define max...

tarjan演算法詳解

參考 tarjan演算法在強連通分量分離中運用很廣,書寫簡單,並且可以拓展到圖的割點,割邊上,十分強大 具體思路 令dfn u 表示當前點的時間戳 low u 表示當前點所能到達的點的時間戳中最小的乙個 到達點u時,將其入棧 拓展點u後代 當且僅當dfn u low u 時,棧頂元素全部出棧,此時出...

Tarjan 演算法筆記

tarjan演算法 tarjan演算法屬於圖論中的乙個演算法,主要用來求乙個圖中的強連通分量,之後就可以做很多事,比如說縮點 求雙聯通分支等。強連通 在乙個有向圖中,對於幾個點,如果它們能夠互相到達,那麼稱它們強連通。強連通分量 可以這樣理解 把乙個圖里的點分成幾坨,每坨中的點都能夠互相到達 他們強...