給出乙個森林,求刪掉乙個點後,形成的連通塊的個數。和pku1523一樣的意思,只不過這裡是森林了。。還要加上原來的連通塊數。
注意:這裡的當m == 0 時要單獨考慮,因為要刪掉乙個點,所以== n-1 而單純的求的話是n了。。。
view code
#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了。include include include define maxn 10010 us...
tarjan演算法詳解
參考 tarjan演算法在強連通分量分離中運用很廣,書寫簡單,並且可以拓展到圖的割點,割邊上,十分強大 具體思路 令dfn u 表示當前點的時間戳 low u 表示當前點所能到達的點的時間戳中最小的乙個 到達點u時,將其入棧 拓展點u後代 當且僅當dfn u low u 時,棧頂元素全部出棧,此時出...
Tarjan 演算法筆記
tarjan演算法 tarjan演算法屬於圖論中的乙個演算法,主要用來求乙個圖中的強連通分量,之後就可以做很多事,比如說縮點 求雙聯通分支等。強連通 在乙個有向圖中,對於幾個點,如果它們能夠互相到達,那麼稱它們強連通。強連通分量 可以這樣理解 把乙個圖里的點分成幾坨,每坨中的點都能夠互相到達 他們強...