*题目描述:
Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通。
*输入
输入n<=100000 m<=500000及m条边
*输出:
输出n个数,代表如果把第i个点去掉,将有多少对点不能互通。
*样例输入:
5 5
1 2
2 3
1 3
3 4
4 5
*样例输出:
8
8
16
14
8
*题解:
裸的找割点。答案就是每个割点的子树的大小乘上除了子树外的点,还有子树和子树之间的对数,最后还有每个点和其他n-1个点的对数。
*代码:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cmath>
  5. #ifdef WIN32
  6. #define LL "%I64d"
  7. #else
  8. #define LL "%lld"
  9. #endif
  10. #ifdef CT
  11. #define debug(...) printf(__VA_ARGS__)
  12. #define setfile()
  13. #else
  14. #define debug(...)
  15. #define filename ""
  16. #define setfile() freopen(filename".in", "r", stdin); freopen(filename".out", "w", stdout);
  17. #endif
  18. #define R register
  19. #define getc() (S == T && (T = (S = B) + fread(B, 1, 1 << 15, stdin), S == T) ? EOF : *S++)
  20. #define dmax(_a, _b) ((_a) > (_b) ? (_a) : (_b))
  21. #define dmin(_a, _b) ((_a) < (_b) ? (_a) : (_b))
  22. #define cmax(_a, _b) (_a < (_b) ? _a = (_b) : 0)
  23. #define cmin(_a, _b) (_a > (_b) ? _a = (_b) : 0)
  24. char B[1 << 15], *S = B, *T = B;
  25. inline int FastIn()
  26. {
  27. R char ch; R int cnt = 0; R bool minus = 0;
  28. while (ch = getc(), (ch < '0' || ch > '9') && ch != '-') ;
  29. ch == '-' ? minus = 1 : cnt = ch - '0';
  30. while (ch = getc(), ch >= '0' && ch <= '9') cnt = cnt * 10 + ch - '0';
  31. return minus ? -cnt : cnt;
  32. }
  33. #define maxn 100010
  34. #define maxm 1000010
  35. struct Edge
  36. {
  37. Edge *next;
  38. int to;
  39. }*last[maxn], e[maxm], *ecnt = e;
  40. inline void link(R int a, R int b)
  41. {
  42. *++ecnt = (Edge) {last[a], b}; last[a] = ecnt;
  43. }
  44. int dfn[maxn], low[maxn], timer, n, m, size[maxn];
  45. long long ans[maxn];
  46. void dfs(R int x, R int fa)
  47. {
  48. dfn[x] = low[x] = ++timer;
  49. size[x] = 1;
  50. R int tmp = 0;
  51. for (R Edge *iter = last[x]; iter; iter = iter -> next)
  52. {
  53. R int pre = iter -> to;
  54. if (pre != fa)
  55. {
  56. if (!dfn[pre])
  57. {
  58. dfs(pre, x);
  59. size[x] += size[pre];
  60. cmin(low[x], low[pre]);
  61. if (dfn[x] <= low[pre])
  62. {
  63. ans[x] += 1ll * tmp * size[pre];
  64. tmp += size[pre];
  65. }
  66. }
  67. else cmin(low[x], dfn[pre]);
  68. }
  69. }
  70. ans[x] += 1ll * tmp * (n - 1 - tmp);
  71. }
  72. int main()
  73. {
  74. // setfile();
  75. n = FastIn(), m = FastIn();
  76. for (R int i = 1; i <= m; ++i)
  77. {
  78. R int a = FastIn(), b = FastIn();
  79. link(a, b); link(b, a);
  80. }
  81. dfs(1, 0);
  82. for (R int i= 1; i <= n; ++i) printf("%lld\n", (ans[i] + n - 1) << 1 );
  83. return 0;
  84. }

【bzoj1123】[POI2008]BLO的更多相关文章

  1. 【bzoj1123】[POI2008]BLO DFS树

    题目描述 Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. 输入 输入n<=100000 ...

  2. 【BZOJ1123】 [POI2008]BLO (tarjan)

    tarjan判断割点...拿掉一个点之后,会被分成若干个联通块,用节点个数和统计一下他们相互不能到达的个数就好. ; maxm=; type edgetype=record toward,next:l ...

  3. 【BZOJ1112】[POI2008]砖块Klo Treap

    [BZOJ1112][POI2008]砖块Klo Description N柱砖,希望有连续K柱的高度是一样的. 你可以选择以下两个动作 1:从某柱砖的顶端拿一块砖出来,丢掉不要了. 2:从仓库中拿出 ...

  4. 【BZOJ1116】[POI2008]CLO 并查集

    [BZOJ1116][POI2008]CLO Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. ...

  5. 【BZOJ1132】[POI2008]Tro 几何

    [BZOJ1132][POI2008]Tro Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000 ...

  6. 【BZOJ1125】[POI2008]Poc hash+map+SBT

    [BZOJ1125][POI2008]Poc Description n列火车,每条有l节车厢.每节车厢有一种颜色(用小写字母表示).有m次车厢交换操作.求:对于每列火车,在交换车厢的某个时刻,与其颜 ...

  7. 【BZOJ1124】[POI2008]枪战Maf 贪心+思路题

    [BZOJ1124][POI2008]枪战Maf Description 有n个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开 ...

  8. 【BZOJ-1123】BLO Tarjan 点双连通分量

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 970  Solved: 408[Submit][Status][ ...

  9. 【bzoj1123】BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2222  Solved: 1090[Submit][Status ...

随机推荐

  1. mysql下载与安装过程

    1:下载MySql 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应的下载文件.(我电脑是64位,所以这下载的是64位的下载文件) 2:解压mysq ...

  2. PIL实现图片框架以及生成图片验证码

    1. PIL的基本概念 PIL:即Python Imaging Library,是Python平台事实上的图像处理标准库. PIL中涉及通道(bands)和模式(mode)这两个重要概念. (1)通道 ...

  3. Mybatis—动态sql拼接问题

    背景:使用Mybatis的最近半年,经常发现一些小坑,现在总结回顾下,记个小本本,不让它再来欺负我! 百度了许久,才留心到官网文档,比我的全,我很菜的! *************<if> ...

  4. 嗨翻C语言--这里没有蠢问题(一)

    问:card_name[0]是什么意思?答:它是用户输入的第一个字符.如果用户输入了10,那么card_name[0]就将是1.问:总是得用/*和*/写注释吗?答:如果你的编译器支持C99标准,就可以 ...

  5. [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)

    [多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...

  6. 列表and元组操作

    一.列表  列表是我们以后比较常用的数据类型之一,通过列表我们可以实现对数据的存储.修改等操作. 首先,我们看一下列表的定义: 有了列表以后,我们可以通过下标来访问列表中的元素.注意:下表是从0开始的 ...

  7. logstash启动时找不到自定义的JAVA_HOME环境变量

    logstash java 版本问题 配置logstash收集应用日志时出现报错,说是找不到JAVA_HOME环境变量,但是明明已经设置了 logstash要求java 1.8以上,查看生产环境: [ ...

  8. 【已解决】Error running 'xxx项目' Command line is too long(idea版)

    [错误] Error running 'xxx项目': Command line is too long. Shorten command line for xxx or also for Sprin ...

  9. Django之AJAX请求

    ---恢复内容开始--- 一.choices字段  1.实列  前端代码 <div class='container'> <div class="row"> ...

  10. Java web项目搭建系列之一 Eclipse中新建Maven项目

    前提条件: 已经安装好JDK 已经安装好Maven 已经安装好Eclipse 已经安装好Maven插件 在Eclipse中新建Maven项目 [File]→[New]→[Other...] [Mave ...