来源:
Central Europe 1996

思路:
Tarjan求割点。
一个点$x$为割点当且仅当:
  1.$x$为根结点且有两棵不相交的子树。
  2.$x$不为根结点且它的子树中没有可以返回到$x$的祖先的边。

实现细节:
  当$x$为根结点时,不能单纯地统计它的度,而是应该统计其不相交子树的个数,因为如果刚好是一个环,每个点的度都是$2$,但去掉这个点以后还是连通的。

  1. #include<cstdio>
  2. #include<vector>
  3. #include<cstring>
  4. const int V=;
  5. const int root=;
  6. std::vector<int> e[V];
  7. inline void add_edge(const int u,const int v) {
  8. e[u].push_back(v);
  9. }
  10. int dfn[V],low[V],cnt;
  11. bool isCut[V];
  12. void Tarjan(const int x) {
  13. int child=;
  14. dfn[x]=low[x]=++cnt;
  15. for(unsigned i=;i<e[x].size();i++) {
  16. int &y=e[x][i];
  17. if(!dfn[y]) {
  18. Tarjan(y);
  19. low[x]=std::min(low[x],low[y]);
  20. child++;
  21. if(x!=root&&low[y]>=dfn[x]) isCut[x]=true;
  22. if(x==root&&child>) isCut[x]=true;
  23. }
  24. else {
  25. low[x]=std::min(low[x],dfn[y]);
  26. }
  27. }
  28. }
  29. inline void init() {
  30. for(int i=;i<V;i++) e[i].clear();
  31. memset(dfn,,sizeof dfn);
  32. memset(low,,sizeof low);
  33. memset(isCut,,sizeof isCut);
  34. cnt=;
  35. }
  36. int main() {
  37. for(;;) {
  38. int n;
  39. scanf("%d",&n);
  40. if(!n) return ;
  41. init();
  42. for(;;) {
  43. int u;
  44. scanf("%d",&u);
  45. if(!u) break;
  46. while(getchar()!='\n') {
  47. int v;
  48. scanf("%d",&v);
  49. add_edge(u,v);
  50. add_edge(v,u);
  51. }
  52. }
  53. Tarjan(root);
  54. int ans=;
  55. for(int i=;i<=n;i++) {
  56. ans+=isCut[i];
  57. }
  58. printf("%d\n",ans);
  59. }
  60. }

[POJ1144]Network的更多相关文章

  1. POJ1144 Network(割点)题解

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

  2. POJ1144 Network 无向图的割顶

    现在打算重新学习图论的一些基础算法,包括像桥,割顶,双连通分量,强连通分量这些基础算法我都打算重敲一次,因为这些量都是可以用tarjan的算法求得的,这次的割顶算是对tarjan的那一类算法的理解的再 ...

  3. ZOJ1311, POJ1144 Network

    题目描述:TLC电话线路公司正在新建一个电话线路网络.他们将一些地方(这些地方用1到N的整数标明,任何2个地方的标号都不相同)用电话线路连接起来.这些线路是双向的,每条线路连接2个地方,并且每个地方的 ...

  4. poj1144 Network【tarjan求割点】

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

  5. POJ1144:Network(无向连通图求割点)

    题目:http://poj.org/problem?id=1144 求割点.判断一个点是否是割点有两种判断情况: 如果u为割点,当且仅当满足下面的1条 1.如果u为树根,那么u必须有多于1棵子树 2. ...

  6. [poj1144]Network(求割点模板)

    解题关键:割点模板题. #include<cstdio> #include<cstring> #include<vector> #include<stack& ...

  7. POJ1144 Network 无向图割点

    题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...

  8. POJ1144 Network 题解 点双连通分量(求割点数量)

    题目链接:http://poj.org/problem?id=1144 题目大意:给以一个无向图,求割点数量. 这道题目的输入和我们一般见到的不太一样. 它首先输入 \(N\)(\(\lt 100\) ...

  9. 【poj1144】 Network

    http://poj.org/problem?id=1144 (题目链接) 题意 求无向图的割点. Solution Tarjan求割点裸题.并不知道这道题的输入是什么意思,也不知道有什么意义= =, ...

随机推荐

  1. bzoj千题计划240:bzoj3900: 交换茸角

    http://www.lydsy.com/JudgeOnline/problem.php?id=3900 dp[i]表示让状态为i的鹿满足要求的最少交换次数 不能枚举两头鹿交换,因为一头鹿可能交换多次 ...

  2. bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链

    http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...

  3. Lua程序设计(一)面向对象概念介绍

    完整代码 local mt = {} mt.__add = function(t1,t2) print("两个Table 相加的时候会调用我") end local t1 = {} ...

  4. [转载]使用 NuGet 管理项目库

    原文:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Mi ...

  5. unp学习笔记——Chapter1

    1.发现网络拓扑的几个重要的命令 (1).netstat -i 提供网络接口的信息.我们还指定-n 标志以输出数值地址,而不是试图把它们反向解析成名字.netstat -r 展示路由表. dzhwen ...

  6. 修改input placeholder样式

    <style> /* 通用 */ ::-webkit-input-placeholder { color: rgb(235, 126, 107); } ::-moz-placeholder ...

  7. http和socket之长连接和短连接区别【转】

    转自:https://blog.csdn.net/mengyafei43/article/details/25195445 TCP/IP TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层 ...

  8. USB的挂起和唤醒(Suspend and Resume)【转】

    转自:http://m.blog.csdn.net/blog/luckywang1103/25244091 USB协议的第9章讲到USB可见设备状态[Universal Serial Bus Spec ...

  9. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  10. centos7 部署 docker、shipyard

    =============================================== 2019/4/9_第3次修改                       ccb_warlock 更新说 ...