题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26780

思路:判断一个点是否是割点的两个条件:1、如果一个点v是根结点并且它的子女个数大于等于2,则v是割点。2、如果点v不是根结点,并且存在她的一个子女u,使得low[u]>=dfn[v],则v是割点。然后我发现以前求割点的写法有点问题,=.=//。幸好不是在比赛中遇到!贡献上最新模板。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. #define MAXN 44444
  7.  
  8. struct Edge{
  9. int v,next;
  10. }edge[MAXN<<];
  11.  
  12. int n,m,NE;
  13. int head[MAXN];
  14.  
  15. void Insert(int u,int v)
  16. {
  17. edge[NE].v=v;
  18. edge[NE].next=head[u];
  19. head[u]=NE++;
  20. }
  21.  
  22. int cnt,ans;
  23. int low[MAXN],dfn[MAXN];
  24. bool mark[MAXN];
  25.  
  26. bool is_cutpoint[MAXN];
  27. void Tarjan(int root,int u)
  28. {
  29. int rt_son=;
  30. low[u]=dfn[u]=++cnt;
  31. mark[u]=true;
  32. for(int i=head[u];i!=-;i=edge[i].next){
  33. int v=edge[i].v;
  34. if(dfn[v]==){
  35. Tarjan(root,v);
  36. low[u]=min(low[u],low[v]);
  37. if(u!=root&&low[v]>=dfn[u])is_cutpoint[u]=true;
  38. rt_son++;
  39. }else if(mark[v]){
  40. low[u]=min(low[u],dfn[v]);
  41. }
  42. }
  43. if(u==root&&rt_son>=){
  44. is_cutpoint[u]=true;
  45. }
  46. }
  47.  
  48. int main()
  49. {
  50. int _case,u,v,t=;
  51. scanf("%d",&_case);
  52. while(_case--){
  53. scanf("%d%d",&n,&m);
  54. NE=;
  55. memset(head,-,sizeof(head));
  56. while(m--){
  57. scanf("%d%d",&u,&v);
  58. Insert(u,v);
  59. Insert(v,u);
  60. }
  61. cnt=ans=;
  62. memset(mark,false,sizeof(mark));
  63. memset(dfn,,sizeof(dfn));
  64. memset(is_cutpoint,false,sizeof(is_cutpoint));
  65. for(int i=;i<=n;i++){
  66. if(dfn[i]==)Tarjan(i,i);
  67. }
  68. for(int i=;i<=n;i++)if(is_cutpoint[i])ans++;
  69. printf("Case %d: %d\n",t++,ans);
  70. }
  71. return ;
  72. }

loj 1063(求割点个数)的更多相关文章

  1. POJ1144Network(求割点个数)

    题目链接 题意:一共n割点,然后若干行,每行第一个输入一个点,然后若干个点表示与他相连,0单独一行表示一个样例的结束.然后求图中的割点个数 割点:去掉该点之后得到的图不在连通,那么该店就是割点 一般割 ...

  2. POJ 1144 Network(tarjan 求割点个数)

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17016   Accepted: 7635 Descript ...

  3. UVA-315 无向图求割点个数

    题意抽象: 给定一个无向图,输出割点个数. 割点定义:删除该点后,原图变为多个连通块. 考虑一下怎么利用tarjan判定割点: 对于点u和他相连的当时还未搜到的点v,dfs后如果DFN[u]<= ...

  4. UVA 315 315 - Network(求割点个数)

     Network  A Telephone Line Company (TLC) is establishing a new telephone cable network. They are con ...

  5. poj 1144(求割点个数)

    题目链接:http://poj.org/problem?id=1144 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根结点并且它的子女个数大于等于2,则v是割点.2.如果点v不是根结点,并 ...

  6. lightoj 1063 求割点

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1063 #include<cstdio> #include<cstri ...

  7. HDU2485Destroying the bus stations 拆点网络流求割点个数

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...

  8. poj1144 Network【tarjan求割点】

    转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4319585.html   ---by 墨染之樱花 [题目链接]http://poj.org/p ...

  9. 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)

    Description 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个 ...

随机推荐

  1. java连接各种数据库代码大全

    1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();S ...

  2. Android Studio 设置不自动缩进匿名内部类

    Android Studio 会默认缩进匿名内部类代码,这让人感觉有些不大适应,可以使用下面的方法进行取消. 取消选中橙色框前的几个复选框即可.

  3. ZLIB 库

    zlib 编辑 zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表.zlib使用DEFLATE算法,最初是为libp ...

  4. 寻虫记:BOM头制造的冤案,无故多出空白行

    最近在做的一个网站发生了一个很诡异的BUG: 使用IE浏览页面时,一切都挺正常: 而使用Firefox浏览时,发现某些页面元素之间的距离比预期的要宽很多,HTML元素本身的hight.padding和 ...

  5. 一个简单的javascript深拷贝

    var extendDeep = function(parent,child){ var i, toStr = Object.prototype.toString, astr = '[object A ...

  6. mapreduce job提交流程源码级分析(一)(原创)

    首先,在自己写的MR程序中通过org.apache.hadoop.mapreduce.Job来创建Job.配置好之后通过waitForCompletion方法来提交Job并打印MR执行过程的log.H ...

  7. 一个1年前的T-SQL问题

    还记得年前的一个SQL问题,当时对SQL刚接触,因此绕开了它.用了别的办法.昨天看SQL突然想起了这个问题.百思不得其解,然后去SQL Server技术交流群,也请教了,大神高文佳,何志勇提示我因为先 ...

  8. java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程

    用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程 ThreadLocal在我的笔记"关于线程同步"的第5种方式里面有介绍,这里就不多说了. ...

  9. Centos7上使用官方YUM源安装Mysql

    1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-co ...

  10. error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”

    error: vtkCommon.lib(vtkSmartPointerBase.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不 ...