http://poj.org/problem?id=1144

题意:给你一些点,某些点直接有边,并且是无向边,求有多少个点是割点

割点:就是在图中,去掉一个点,无向图会构成多个子图,这就是割点

Tarjan算法求割点的办法

  1. 如果该点为根,那么它的子树必须要大于1
  2. 如果该点不为根,那么当low[v]>=dnf[u]时,为割点

Low[v]>=dnf[u]也就是说明U的子孙点只能通过U点访问U的祖先点

  1. #include <stdio.h>
  2. #include <stack>
  3. #include <string.h>
  4. #define maxn 505
  5.  
  6. using namespace std;
  7.  
  8. stack <int >s;
  9.  
  10. int head[maxn],n,pos,dfn[maxn],low[maxn],bcnt,dindex,num[maxn],root;
  11.  
  12. bool vis[maxn];
  13.  
  14. struct node{
  15. int next,to;
  16. }edge[maxn];
  17.  
  18. void add(int u,int v)
  19. {
  20. edge[pos].to = v;
  21. edge[pos].next = head[u];
  22. head[u] = pos++;
  23. }
  24.  
  25. void Tarjan(int u)
  26. {
  27. dfn[u] = low[u] = ++dindex;
  28. vis[u] = true;
  29. s.push(u);
  30. for(int i = head[u]; i != - ; i = edge[i].next)
  31. {
  32. int v = edge[i].to;
  33. if(!vis[v])
  34. {
  35. Tarjan(v);
  36. if(low[v]<low[u]) low[u] = low[v];
  37. if(low[v]>=dfn[u]&&u!=)
  38. {
  39. num[u]++;
  40. }else if(u==)
  41. root++;
  42. }else if(dfn[v]<low[u])
  43. low[u] = dfn[v];
  44. }
  45. }
  46.  
  47. int main()
  48. {
  49. int u,v,ans;
  50. // freopen("in.txt","r",stdin);
  51. while(scanf("%d",&n),n)
  52. {
  53.  
  54. memset(head,-,sizeof(head));
  55. memset(vis,false,sizeof(vis));
  56. memset(dfn,,sizeof(dfn));
  57. memset(low,,sizeof(low));
  58. memset(num,,sizeof(num));
  59. pos = ;
  60. ans = ;
  61. while(scanf("%d",&u)&&u)
  62. {
  63. while(getchar()!='\n')
  64. {
  65. scanf("%d",&v);
  66. add(u,v);
  67. add(v,u);
  68. }
  69. }
  70. bcnt = dindex = root=;
  71. for(int i = ;i<=n;i++)
  72. if(!dfn[i]) Tarjan(i);
  73. for(int i = ; i<=n;i++)
  74. if(num[i]) ans++;
  75. if(root>) ans++;
  76. printf("%d\n",ans);
  77. }
  78. return ;
  79. }

https://www.byvoid.com/blog/scc-tarjan/一个很好的学习Tarjan的博客

POJ 1144的更多相关文章

  1. poj 1144 Network 图的割顶判断模板

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8797   Accepted: 4116 Descripti ...

  2. POJ 1144 Network(Tarjan求割点)

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12707   Accepted: 5835 Descript ...

  3. poj 1144 Network(无向图求割顶数)

    题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...

  4. POJ 1144 Network(无向图连通分量求割点)

    题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...

  5. poj 1144 Network(割点)

    题目链接: http://poj.org/problem?id=1144 思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| ...

  6. poj 1144 (Tarjan求割点数量)

    题目链接:http://poj.org/problem?id=1144 描述 一个电话线公司(简称TLC)正在建立一个新的电话线缆网络.他们连接了若干个地点分别从1到N编号.没有两个地点有相同的号码. ...

  7. poj 1144(割点)

    题目链接:http://poj.org/problem?id=1144 题意:给出一个无向图,求关键节点的个数. 分析:双连通分量Tarjan算法直接求割点就行了,裸的模板题. AC代码: #incl ...

  8. POJ 1144 Network(无向图的割顶和桥模板题)

    http://poj.org/problem?id=1144 题意: 给出图,求割点数. 思路: 关于无向图的割顶和桥,这篇博客写的挺不错,有不懂的可以去看一下http://blog.csdn.net ...

  9. poj 1144(求割点个数)

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

随机推荐

  1. neo4j-备份、恢复

    neo4j备份命令(本例linux) neo4j-backup 命令使用: ./neo4j-backup -full -from single://[machine IP] -to ~/backup- ...

  2. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  3. BeautifulSoup :功能使用

    # -*- coding: utf-8 -*- ''' # Author : Solomon Xie # Usage : 测试BeautifulSoup一些用法及容易出bug的地方 # Envirom ...

  4. BZOJ2809: [Apio2012]dispatching

    传送门 主席树经典题. 首先把树搞出来,然后搞出来DFS序.然后离散化点权,在DFS序上建立主席树. 对于每个点对应的区间,查找对应的区间最大的点数即可. //BZOJ2809 //by Cydiat ...

  5. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

  6. http://www.cnblogs.com/kissdodog/p/4159176.html

    想要自己一个人完成app,那么后台接口也必须自己动动手.不用担心,其实很简单的,给自己信心!下面就以登录注册为例,做一个api接口 首先在mac上搭建PHP环境,下载 MAMP Pro for Mac ...

  7. Html中设置访问页面不在后进行其他页面跳转

    Html中设置访问页面不在后进行其他页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  8. 20145204&20145212信息安全系统实验二

    20145204&20145212信息安全系统实验二 链接

  9. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

    适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...

  10. 初识exception

    一.exception的分类 根据此exception(异常)是否可以打断正在执行的指令,可以将exception分为 asynchronous exception 和 synchronous exc ...