题目链接

题意: 给出一张无向图,求割点的个数

思路:非常裸的题目。直接套用模版就可以。

代码:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. const int MAXN = 1005;
  9.  
  10. struct Edge{
  11. int to, next;
  12. bool cut;
  13. }edge[MAXN * 10];
  14. int head[MAXN], tot;
  15. int Low[MAXN], DFN[MAXN];
  16. int Index, cnt;
  17. bool cut[MAXN];
  18.  
  19. void addedge(int u, int v) {
  20. edge[tot].to = v;
  21. edge[tot].next = head[u];
  22. edge[tot].cut = false;
  23. head[u] = tot++;
  24. }
  25.  
  26. void Tarjan(int u, int pre) {
  27. int v;
  28. Low[u] = DFN[u] = ++Index;
  29. int son = 0;
  30. for (int i = head[u]; i != -1; i = edge[i].next) {
  31. v = edge[i].to;
  32. if (v == pre) continue;
  33. if (!DFN[v]) {
  34. son++;
  35. Tarjan(v, u);
  36. if (Low[u] > Low[v]) Low[u] = Low[v];
  37. if (u != pre && Low[v] >= DFN[u]) {
  38. cut[u] = true;
  39. }
  40. }
  41. else if (Low[u] > DFN[v])
  42. Low[u] = DFN[v];
  43. }
  44. if (u == pre && son > 1) cut[u] = true;
  45. }
  46.  
  47. void init() {
  48. memset(head, -1, sizeof(head));
  49. memset(DFN, 0, sizeof(DFN));
  50. memset(cut, false, sizeof(cut));
  51. tot = 0;
  52. Index = cnt = 0;
  53. }
  54.  
  55. int main() {
  56. int n;
  57. while (scanf("%d", &n) && n) {
  58. init();
  59. int u, v;
  60. while (scanf("%d", &u) && u) {
  61. char ch;
  62. while (scanf("%d%c", &v, &ch)) {
  63. addedge(u, v);
  64. addedge(v, u);
  65. if (ch == '\n') break;
  66. }
  67. }
  68.  
  69. for (int i = 1; i <= n; i++)
  70. if (!DFN[i])
  71. Tarjan(i, i);
  72. for (int i = 1; i <= n; i++)
  73. if (cut[i])
  74. cnt++;
  75. printf("%d\n", cnt);
  76. }
  77. return 0;
  78. }

版权声明:本文博主原创文章,博客,未经同意不得转载。

UVA315- Network(无向图割点)的更多相关文章

  1. POJ1144 Network 无向图割点

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

  2. UVA315 Network 连通图割点

    题目大意:有向图求割点 题目思路: 一个点u为割点时当且仅当满足两个两个条件之一: 1.该点为根节点且至少有两个子节点 2.u不为树根,且满足存在(u,v)为树枝边(或称 父子边,即u为v在搜索树中的 ...

  3. uva-315.network(连通图的割点)

    本题大意:求一个无向图额割点的个数. 本题思路:建图之后打一遍模板. /**************************************************************** ...

  4. tarkjan求无向图割点模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; ; struct node { ...

  5. UVA315 Network —— 割点

    题目链接:https://vjudge.net/problem/UVA-315 A Telephone Line Company (TLC) is establishing a new telepho ...

  6. UVA315 (无向图求割点)

    题目大意:给定一个无向图,问共存在多少个割点.(割点:去掉此点后此图会断开连接)割点有两种存在:一种是第一次搜索的根节点,若其子节点数超过两个,则此点去掉后图会 断开连接,因此此点为割点:或者此点为搜 ...

  7. poj 1144 Network 无向图求割点

    Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. Th ...

  8. Network -UVa315(连通图求割点)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page=sh ...

  9. [UVA315]Network(tarjan, 求割点)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

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

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

随机推荐

  1. Node.js : 我只需要一个店小二

    刚刚开始接触Node.js时, google了很多文章,但发现大部分都是泛泛的介绍安装,配置,以及介绍几个小例子 有一种雾里观花的感觉,所以非常困惑,不知道Node.js到底解决了什么问题,它的优势到 ...

  2. JDBC批处理executeBatch

    JDBC运行SQL声明,有两个处理接口,一PreparedStatement,Statement,一般程序JDBC有多少仍然比较PreparedStatement 只要运行批处理,PreparedSt ...

  3. Ubuntu 下一个 vim 建立python 周围环境 构造

    于Windows通过使用各种现成的工具使用,去Linux下一个,没有一个关于线索--总之google有些人的经验,折腾来折腾,开发环境也算是一个好工作. 1. 安装完成vim # apt-get in ...

  4. 什么是“Bash”破绽?

    摘要:近来的linux系统出现"Bash"漏洞可以被认为是第一个互联网造成安全讨论和思考.错的资料. 什么是"Bash"漏洞?它是怎样工作的?它是否可以成为新的 ...

  5. FTP文件操作之下载文件

    前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了.所以今天就跟大家一起学习学习使用ftp下载文件. 知道了怎么上传,那么下载也就变得很简单了,上传是把文 ...

  6. 2014年CCNU-ACM暑期集训总结

    2014年CCNU-ACM暑期集训总结 那个本期待已久的暑期集训居然就这种.溜走了.让自己有点措手不及.很多其它的是对自己的疑问.自己是否能在ACM这个领域有所成就.带着这个疑问,先对这个暑假做个总结 ...

  7. UVa 524 Prime Ring Problem(DFS , 回溯)

    题意  把1到n这n个数以1为首位围成一圈  输出全部满足随意相邻两数之和均为素数的全部排列 直接枚举排列看是否符合肯定会超时的  n最大为16  利用回溯法 边生成边推断  就要快非常多了 #inc ...

  8. uboot的relocation原理具体分析

    近期在一直在做uboot的移植工作,uboot中有非常多值得学习的东西.之前总结过uboot的启动流程,但uboot一个非常核心的功能没有细致研究.就是uboot的relocation功能. 这几天研 ...

  9. Best Time to Buy and Sell Stock I,II,III [leetcode]

    Best Time to Buy and Sell Stock I 你只能一个操作:维修preMin拍摄前最少发生值 代码例如以下: int maxProfit(vector<int> & ...

  10. 【从翻译mos文章】不再用par file如果是,export or import 包含大写和小写表名称表

    不再用par file如果是,export or import 包含大写和小写表名称表 参考原始: How to Export or Import Case Sensitive Tables With ...