题意:给定一个n个点的连通的无向图,一个点的“鸽子值”定义为将它从图中删去后连通块的个数。

求对应的点 和 每个点的“鸽子值”

用一个数组在判断割顶的那个地方 累加标记一下所连接的连通块的数量即可

初始化为1。。从1开始累加

饿的发懒。。。看别人的代码吧。原代码地址:https://blog.csdn.net/u014664226/article/details/46622001

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<cstdlib>
  5. #include<iostream>
  6. #include<algorithm>
  7. #include<vector>
  8. #include<map>
  9. #include<queue>
  10. #include<stack>
  11. #include<string>
  12. #include<map>
  13. #include<set>
  14. #define eps 1e-6
  15. #define LL long long
  16. using namespace std;
  17.  
  18. const int maxn = + ;
  19. const int INF = 0x3f3f3f3f;
  20. int n, m;
  21. vector<int> G[maxn];
  22. int val[maxn], node[maxn]; //node数组记录结点id间接排序
  23. bool cmp(int x, int y) {
  24. return val[x] == val[y] ? x < y : val[x] > val[y];
  25. }
  26.  
  27. int pre[maxn], dfs_clock;
  28. int dfs(int u, int fa) { //u在dfs树中的父节点为fa
  29. int lowu = pre[u] = ++dfs_clock;
  30. int child = ; //子节点个数
  31. for(int i = ; i < G[u].size(); i++) {
  32. int v = G[u][i];
  33. if(!pre[v]) { //没有访问过v
  34. child++;
  35. int lowv = dfs(v, u);
  36. lowu = min(lowu, lowv); //用后代的low函数更新u的low函数
  37. if(lowv >= pre[u]) {
  38. val[u]++;
  39. }
  40.  
  41. }
  42. else if(pre[v] < pre[u] && v != fa) lowu = min(lowu, pre[v]); //用反向边更新u的low函数
  43. }
  44. if(fa < && child == ) val[u] = ;
  45. return lowu;
  46. }
  47.  
  48. void init() {
  49. dfs_clock = ;
  50. memset(pre, , sizeof(pre));
  51. for(int i = ; i < n; i++) {
  52. G[i].clear();
  53. node[i] = i;
  54. val[i] = ;
  55. }
  56. int x, y;
  57. while(scanf("%d%d", &x, &y) == && x >= ) {
  58. G[x].push_back(y);
  59. G[y].push_back(x);
  60. }
  61. }
  62.  
  63. void solve() {
  64. dfs(, -);
  65. sort(node, node+n, cmp);
  66. for(int i = ; i < m; i++) cout << node[i] << " " << val[node[i]] << endl;
  67. cout << endl;
  68. }
  69.  
  70. int main() {
  71. //freopen("input.txt", "r", stdin);
  72. while(scanf("%d%d", &n, &m) == && n) {
  73. init();
  74. solve();
  75. }
  76. return ;
  77. }

Doves and bombs UVA - 10765(统计割顶所连接的连通块的数量)的更多相关文章

  1. UVA 572 Oil Deposits油田(DFS求连通块)

    UVA 572     DFS(floodfill)  用DFS求连通块 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format: ...

  2. UVA 10765 Doves and bombs(双连通分量)

    题意:在一个无向连通图上,求任意删除一个点,余下连通块的个数. 对于一个非割顶的点,删除之后,原图仍连通,即余下连通块个数为1:对于割顶,余下连通块个数>=2. 由于是用dfs查找双连通分量,树 ...

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

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

  4. UVa 572 油田(DFS求连通块)

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

  5. uva 10765 Doves and Bombs(割顶)

     题意:给定一个n个点的连通的无向图,一个点的"鸽子值"定义为将它从图中删去后连通块的个数.求每一个点的"鸽子值". 思路dfs检查每一个点是否为割顶,并标 ...

  6. UVA 10765 Doves and bombs

    给定一个无向的连通图,要求每个点去掉后连通分量的数目,然后输出连通分量最多的m个点. 分析: 先求出双连通分量,然后统计所有双连通分量中割顶出现的次数,最后求出的就是割顶去掉后剩下的双连通的数目,对于 ...

  7. UVA 315 :Network (无向图求割顶)

    题目链接 题意:求所给无向图中一共有多少个割顶 用的lrj训练指南P314的模板 #include<bits/stdc++.h> using namespace std; typedef ...

  8. POJ1144 Network 无向图的割顶

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

  9. 图论(无向图的割顶):POJ 1144 Network

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

随机推荐

  1. day 6 汽车4S店铺

    1.版本1:大框架 class CarStore(object): '''定义一个汽车店铺类''' pass class Car(object): '''定义一个汽车类''' pass car_sto ...

  2. 【LOJ10121】与众不同

    [LOJ10121]与众不同 题面 LOJ 题解 这题是_\(tham\)给\(ztl\)他们做的,然而这道题™居然还想了蛮久... 首先可以尺取出一个位置\(i\)上一个合法的最远位置\(pre_i ...

  3. PowerDesigner 15学习笔记:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  4. node升级7.0以上版本使用gulp时报错

    今天使用gulp时 ,出现了以下报错信息: Error: Cannot find module 'internal/fs'at Object.<anonymous> (/home/XXX/ ...

  5. MYSQL存储过程调试过程

     mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有几种简单的方式追踪执行过程: 1.用一张临时表,记录调试过程: 2.直接在存储过程中,增加select xxx,在控 ...

  6. 【坚持】Selenium+Python学习之从读懂代码开始 DAY3

    2018/05/15 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) #No.1 list = [1, 2, 3, 4] ...

  7. php作用域限定符

    双冒号::被认为是作用域限定操作符,用来指定类中不同的作用域级别.::左边表示的是作用域,右边表示的是访问的成员. 系统定义了两个作用域,self和parent.self表示当前类的作用域,在类之外的 ...

  8. “Hello World!团队”Beta发布—视频链接+文案+美工

    视频链接:http://v.youku.com/v_show/id_XMzE3MjEyMzkyMA==.html?spm=a2h3j.8428770.3416059.1 文案+美工:http://ww ...

  9. 20162316刘诚昊 第八周实验报告:实验二 Java面向对象程序设计

    实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习<L ...

  10. 2014-2015 ACM-ICPC, NEERC, Eastern Subregional Contest Problem H. Pair: normal and paranormal

    题目链接:http://codeforces.com/group/aUVPeyEnI2/contest/229669 时间限制:1s 空间限制:64MB 题目大意:给定一个长度为2n,由n个大写字母和 ...