pku 2117 tarjan算法求割点
2012-02-13 15:14
316 查看
http://poj.org/problem?id=2117
给出一个森林,求删掉一个点后,形成的连通块的个数。和pku1523一样的意思,只不过这里是森林了。。还要加上原来的连通块数。
注意:这里的当m == 0 时要单独考虑,因为要删掉一个点,所以== n-1 而单纯的求的话是n了。。。
View Code
给出一个森林,求删掉一个点后,形成的连通块的个数。和pku1523一样的意思,只不过这里是森林了。。还要加上原来的连通块数。
注意:这里的当m == 0 时要单独考虑,因为要删掉一个点,所以== n-1 而单纯的求的话是n了。。。
View Code
#include <cstdio> #include <cstring> #include <iostream> #define maxn 10010 using namespace std; struct node { int v; int next; }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) { g[t].v = v; g[t].next = head[u]; head[u] = t++; } void init() { memset(g,0,sizeof(g)); for (int i = 0;i < maxn; ++i) { head[i] = low[i] = dfn[i] = cut[i] = 0; } t = 1; index = ans = 0; } void tarjan(int i) { int j,k; low[i] = dfn[i] = ++index; for (k = head[i]; k; k = g[k].next) { j = g[k].v; if (!dfn[j]) { tarjan(j); if (i == root) rtson++; else { if (low[i] > low[j]) low[i] = low[j]; if (low[j] >= dfn[i]) cut[i]++; } } else { if(low[i] > dfn[j]) low[i] = dfn[j]; } } ans = max(ans,cut[i]); } void solve() { int count = 0; for (int i = 0; i < n; ++i) { root = i; rtson = 0; if (!dfn[root]) { count++; tarjan(root); } cut[root] = rtson - 1; ans = max(cut[root],ans); } printf("%d\n",ans + count); } int main() { int m,i,x,y; while (cin>>n>>m) { if (!n && !m) break; if (m == 0) { printf("%d\n",n-1); continue; } init(); for (i = 0; i < m; ++i) { cin>>x>>y; add(x,y); add(y,x); } solve(); } }
相关文章推荐
- 【tarjan算法求割点】PKU-1523-SPF
- ACM主流算法&pku题目分类
- LCA算法解析-Tarjan&倍增
- Tarjan 算法自我总结
- PKU-3264 Balanced Lineup (RMD之ST算法)
- LA 5061 LCA tarjan 算法
- (转)全网最!详!细!tarjan算法讲解
- [算法] LCA 最近公共祖先 (Tarjan)
- tarjan 算法解决问题
- (算法)Tarjan离线算法解决LCA问题 (附POJ 1470 Closest Common Ancestors 代码)
- 有向图强连通分量(Tarjan)算法
- pku 3694 Network tarjan求割边
- ACM基本算法分类、推荐学习资料和配套pku习题
- poj 2186(tarjan 算法实现)
- 大家好!今晚开了CSDN的博客,专门的pku算法代码,希望给访问者有帮助。
- manacher 算法详解 pku 3974
- Tarjan算法求LCA(最近公共祖先)
- acm pku 1251 Jungle Roads的算法分析与实现
- 强连通分量(强连通缩点(tarjan))+最小路径覆盖(匈牙利算法)
- hdu 4685 Prince and Princess 【匈牙利算法-匹配、强连通分量-Tarjan-缩点】