1. /*
  2. Tarjan求割点
  3. */
  4. #include<iostream>
  5. #include<cstdio>
  6. #include<cstring>
  7. #include<stack>
  8. #define maxn 10010
  9. using namespace std;
  10. int n,m,num,head[maxn],low[maxn],dfn[maxn],f[maxn],father[maxn];
  11. int point[maxn],topt,sum;
  12. struct node{
  13. int v,pre;
  14. }e[maxn*];
  15. stack<int>s;
  16. int init(){
  17. int x=;char s=getchar();
  18. while(s<''||s>'')s=getchar();
  19. while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
  20. return x;
  21. }
  22. void Clear(){
  23. memset(head,-,sizeof(head));
  24. memset(low,,sizeof(low));
  25. memset(dfn,,sizeof(dfn));
  26. memset(f,,sizeof(f));
  27. memset(point,,sizeof(point));
  28. num=topt=sum=;
  29. while(!s.empty())s.pop();
  30. }
  31. void Add(int from,int to){
  32. e[num].v=to;
  33. e[num].pre=head[from];
  34. head[from]=num++;
  35. }
  36. void Tarjan(int x,int fa,int E){
  37. father[x]=fa;
  38. dfn[x]=low[x]=++topt;
  39. f[x]=;s.push(x);
  40. int sc=;
  41. for(int i=head[x];i!=-;i=e[i].pre){
  42. int v=e[i].v;
  43. if(i==(E^))continue;
  44. if(dfn[v]==){
  45. sc++;
  46. Tarjan(v,x,i);low[x]=min(low[x],low[v]);
  47. if(low[v]>=dfn[x])point[x]++;
  48. }
  49. else if(f[v])low[x]=min(low[x],dfn[v]);
  50. }
  51. if(fa<&&sc==)point[x]=;
  52. if(low[x]==dfn[x]){
  53. while(s.top()!=x){
  54. f[s.top()]=;s.pop();
  55. }
  56. f[s.top()]=;s.pop();
  57. }
  58. }
  59. void Init(){
  60. for(int i=;i<=m;i++){
  61. int u,v;
  62. u=init();v=init();
  63. u++;v++;
  64. Add(u,v);Add(v,u);
  65. }
  66. for(int i=;i<=n;i++)
  67. if(dfn[i]==){
  68. sum++;Tarjan(i,-,-);
  69. }
  70. }
  71. void Solve(){
  72. int mxx=-;
  73. for(int u=;u<=n;u++){
  74. if(father[u]==-){
  75. point[u]--;
  76. }
  77. mxx=max(mxx,point[u]);
  78. }
  79. printf("%d\n",sum+mxx);
  80. }
  81. int main()
  82. {
  83. while(){
  84. n=init();m=init();
  85. if(n==&&m==)break;
  86. Clear();
  87. Init();
  88. Solve();
  89. }
  90. }

poj 2117 Electricity的更多相关文章

  1. POJ 2117 Electricity(割点求连通分量)

    http://poj.org/problem?id=2117 题意:求删除图中任意一个顶点后的最大连通分量数. 思路: 求出每个割点对应的连通分量数,注意这道题目中图可能是不连通的. 这道题目我wa了 ...

  2. POJ 2117 Electricity 双联通分量 割点

    http://poj.org/problem?id=2117 这个妹妹我竟然到现在才见过,我真是太菜了~~~ 求去掉一个点后图中最多有多少个连通块.(原图可以本身就有多个连通块) 首先设点i去掉后它的 ...

  3. poj 2117 Electricity(tarjan求割点删掉之后的连通块数)

    题目链接:http://poj.org/problem?id=2117 题意:求删除一个点后,图中最多有多少个连通块. 题解:就是找一下割点,根节点的割点删掉后增加son-1(son为子树个数),非根 ...

  4. poj 2117 Electricity【点双连通求删除点后最多的bcc数】

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4727   Accepted: 1561 Descr ...

  5. POJ—— 2117 Electricity

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5620   Accepted: 1838 Descr ...

  6. Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题

    Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...

  7. POJ 2117 (割点+连通分量)

    题目链接: http://poj.org/problem?id=2117 题目大意:在一个非连通图中,求一个切除图中任意一个割点方案,使得图中连通分量数最大. 解题思路: 一个大陷阱,m可以等于0,这 ...

  8. 【POJ】2117 Electricity

    无向图求割点和连通块. /* POJ2117 */ #include <iostream> #include <vector> #include <algorithm&g ...

  9. poj 2117(割点的应用)

    题目链接:http://poj.org/problem?id=2117 思路:题目的意思是要求对于给定的无向图,删除某个顶点后,求最大的连通分量数.显然我们只有删掉割点后,连通分支数才会增加,因此我们 ...

随机推荐

  1. Nopcommerce架构浅谈之文件结构

    应该是在两年前了,在拜读园子里大神的文章时偶然了解到有个叫NopCommerce的商城系统,苦于没有时间,各种耽误,其中研究过一段时间,也就是一个星期时间,后来又耽搁了,直到最近,随着项目进入间歇期, ...

  2. [HDOJ 5155] Harry And Magic Box

    题目链接:HDOJ - 5155 题目大意 有一个 n * m 的棋盘,已知每行每列都至少有一个棋子,求可能有多少种不同的棋子分布情况.答案对一个大素数取模. 题目分析 算法1: 使用容斥原理与递推. ...

  3. NYOJ 540

    为了给学弟学妹讲课,我水了一道题…… import java.util.Arrays; import java.util.Scanner; public class NYOJ540 { public ...

  4. Android Wear开发 - 数据通讯 - 第零节 : 打包Wear应用(手机和手表应用如何连接)

    之所以将打包这一特殊的内容作为数据通讯的第零节,是因为如果没有通过配置打包的一些信息,则没有办法将手机端应用和手表端应用连接起来,则无法继续进行接下来的数据通讯的开发. 以下依然只针对Eclipse平 ...

  5. Android Wear计时器开发

    记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想 ...

  6. 【HDOJ】5179 beautiful number

    DFS. /* 5179 */ #include <iostream> #include <algorithm> #include <map> #include & ...

  7. 测试使用wiz来发布blog

    晚上尝试了下用wiz写随笔并发布,貌似成功了,虽然操作体验和方便性上不如word,但起码它集成了这个简单的功能可以让我用:如果能让我自动新建blog文章并自动定时更新发布就完美了.2013年7月5日1 ...

  8. Ubuntu频率较高的操作

    一.切换超级用户 由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如 ...

  9. 在kafka上对topic新增partition

    对topic增加partition 参考官网site:http://kafka.apache.org/documentation.html#basic_ops_modify_topic 通过kafka ...

  10. Ural1297 Palindrome(后缀数组)

        [题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12406 [题意] 求最长回文子串. [思路] 将字符串 ...