Description

Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通。

Input

输入n<=100000 m<=500000及m条边

Output

输出n个数,代表如果把第i个点去掉,将有多少对点不能互通。

Sample Input

5 5
1 2
2 3
1 3
3 4
4 5

Sample Output

8
8
16
14
8

Solution

题意不清楚。点对(x,y)!=(y,x),且去掉的点也要考虑进答案
当我们dfs找割点的时候,会形成一颗dfs树
对于一个割点x,若将其去掉,可以分成x上面的一颗子树和x的若干子树
Tarjan的时候乘法原理统计一下答案即可

Code

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #define N (100000+1000)
  5. #define M (500000+1000)
  6. using namespace std;
  7.  
  8. struct Edge{int from,to,next;}edge[M<<];
  9. int n,m,u,v,head[N],num_edge;
  10. int Dfn[N],Low[N],dfs_num,Cut[N];
  11. long long size[N],ans[N];
  12.  
  13. void add(int u,int v)
  14. {
  15. edge[++num_edge].from=u;
  16. edge[num_edge].to=v;
  17. edge[num_edge].next=head[u];
  18. head[u]=num_edge;
  19. }
  20.  
  21. void Tarjan(int x,int fa)
  22. {
  23. long long son_num=,sum=;
  24. size[x]=;
  25. Dfn[x]=Low[x]=++dfs_num;
  26. for (int i=head[x]; i; i=edge[i].next)
  27. if (!Dfn[edge[i].to])
  28. {
  29. son_num++;
  30. Tarjan(edge[i].to,x);
  31. size[x]+=size[edge[i].to];
  32. Low[x]=min(Low[x],Low[edge[i].to]);
  33. if (Low[edge[i].to]>=Dfn[x])
  34. {
  35. Cut[x]=true;
  36. ans[x]+=sum*size[edge[i].to];
  37. sum+=size[edge[i].to];
  38. }
  39. }
  40. else
  41. if (Dfn[x]>Dfn[edge[i].to] && edge[i].to!=fa)
  42. Low[x]=min(Low[x],Dfn[edge[i].to]);
  43. if (fa== && son_num==)
  44. Cut[x]=false;
  45. if (Cut[x]) ans[x]+=sum*(n-sum-);
  46. }
  47.  
  48. int main()
  49. {
  50. scanf("%d%d",&n,&m);
  51. for (int i=; i<=m; ++i)
  52. {
  53. scanf("%d%d",&u,&v);
  54. add(u,v); add(v,u);
  55. }
  56. for (int i=; i<=n; ++i)
  57. if (!Dfn[i])
  58. Tarjan(i,);
  59. for (int i=; i<=n; ++i)
  60. printf("%lld\n",(long long)(ans[i]+n-)*);
  61. }

BZOJ1123:[POI2008]BLO(双连通分量)的更多相关文章

  1. BZOJ1123: [POI2008]BLO

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

  2. 【dfs+连通分量】Bzoj1123 POI2008 BLO

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  3. BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; type ...

  4. bzoj1123 [POI2008]BLO——求割点子树相乘

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 思路倒是有的,不就是个乘法原理吗,可是不会写...代码能力... 写了一堆麻麻烦烦乱七 ...

  5. [BZOJ1123]:[POI2008]BLO(塔尖)

    题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...

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

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

  7. bzoj 1123 [POI2008]BLO——点双连通分量

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 点双连通分量缩点,然后各种各样. 结果不会写了.比如新连边.记录一个点是割点缩成的点还 ...

  8. tarjan算法与无向图的连通性(割点,桥,双连通分量,缩点)

    基本概念 给定无向连通图G = (V, E)割点:对于x∈V,从图中删去节点x以及所有与x关联的边之后,G分裂为两个或两个以上不相连的子图,则称x为割点割边(桥)若对于e∈E,从图中删去边e之后,G分 ...

  9. 【bzoj1123】BLO

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

随机推荐

  1. PIE SDK图层树右键菜单与命令绑定

    1.   功能简介 上一节已经介绍过图层树如何和地图和制图关联,图层树右键菜单主要是基于TocControl控件进行对菜单节点进行控制,TocControl主要作用是显示当前加载的图层有哪些.采用什么 ...

  2. 用 fmt格式化候时间

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <div ...

  3. 信号和槽:Qt中最差劲的创造

    不要被这个标题唬住了,实际上我是非常认可Qt的.在C++实现的开源产品中没有哪一个的API风格比得上Qt,拥有高度一致性,符合常识,符合直觉,几乎不用学就可以直接上手.或许是由于我们摆脱不了马太效应的 ...

  4. 游戏源码--Unity开源Moba游戏-服务器-客户端完整V1.0

    http://www.manew.com/thread-111658-1-1.html

  5. hadoop面试题一

    1.hadoop运行的原理?xxxxxx 2.mapreduce的原理?xxxxxx 3.HDFS存储的机制?xxxxxx 4.举一个简单的例子说明mapreduce是怎么来运行的 ?xxxxxx 5 ...

  6. CF 305A——Strange Addition——————【暴力加技巧】

    A. Strange Addition time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. ionic2 目录

    首先 ionic2 暂时找不到中文文档.本人英语又很渣.无奈之下只能依赖于百度翻译.完全是已自己理解的方式运作 ,可能里面会有一些偏差之类的 不过我都测试过代码是可以跑通的 只不过讲解的部分可能... ...

  8. 文件读取工具类读取properties文件

    1.创建工具类 import java.io.IOException; import java.util.Properties; /** * * 类名称:PropertiesUtil * 类描述: 文 ...

  9. C# 创建一个WCF服务

    做代码统计,方便以后使用: app.config配置文件设置: <configuration> <system.serviceModel> <bindings> & ...

  10. win10x系统下的Git下载安装

    git安装和使用百度一下就有,官方地址https://git-scm.com/book/zh/v1/起步-安装-Git 但是说的并不是很详细,自己记录一下, 首先我们去官网下载一个git 有两个下载地 ...