Description

给定一张无向图,求每个点被封锁(删去与其相连的边)之后有多少个有序点对(x,y)(x!=y,1<=x,y<=n)满足x无法到达y.

Input&Output

Input

第一行两个整数n,m. 分别为点数和边数。

接下来m行,每行两个整数a,b,代表a和b之间有一条边。

Output

共n行,每行一个整数,即封锁每个点后的答案。

Sample

Input

  1. 5 5
  2. 1 2
  3. 2 3
  4. 1 3
  5. 3 4
  6. 4 5

Output

  1. 8
  2. 8
  3. 16
  4. 14
  5. 8

Solution

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #define maxn 100005
  5. #define maxm 500005
  6. using namespace std;
  7. typedef long long ll;
  8. struct edge{
  9. int to,nxt;
  10. }e[maxm<<1];
  11. int n,m,edgenum,lnk[maxn],low[maxn],dfn[maxn],vis[maxn],cut[maxn];
  12. int cnt,size[maxn],root,a,b;
  13. ll ans[maxn],sum;
  14. void add(int bgn,int end)
  15. {
  16. e[++edgenum].to=end;
  17. e[edgenum].nxt=lnk[bgn];
  18. lnk[bgn]=edgenum;
  19. }
  20. void tarjan(int x)
  21. {
  22. dfn[x]=low[x]=++cnt;
  23. size[x]=1;
  24. int children=0,sum=0;
  25. for(int p=lnk[x];p;p=e[p].nxt){
  26. int y=e[p].to;
  27. if(!dfn[y]){
  28. tarjan(y);
  29. size[x]+=size[y];
  30. low[x]=min(low[x],low[y]);
  31. if(low[y]>=dfn[x]){
  32. children++;
  33. ans[x]+=(long long)size[y]*(n-size[y]);
  34. sum+=size[y];
  35. if(x!=root||children>1)cut[x]=1;
  36. }
  37. }
  38. else low[x]=min(low[x],dfn[y]);
  39. }
  40. if(cut[x]) ans[x]+=(long long)(n-1-sum)*(1+sum)+(n-1);
  41. else ans[x]=2*(n-1);
  42. }
  43. int main()
  44. {
  45. scanf("%d%d",&n,&m);
  46. for(int i=1;i<=m;++i)
  47. scanf("%d%d",&a,&b),add(a,b),add(b,a);
  48. root=1;
  49. tarjan(1);
  50. for(int i=1;i<=n;++i)
  51. printf("%lld\n",ans[i]);
  52. return 0;
  53. }

[POI2008]BLO-Blockade - Tarjan,割点的更多相关文章

  1. [POI2008]BLO(Tarjan)

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

  2. 【bzoj1123】【[POI2008]BLO】tarjan判割点

    (上不了p站我要死了,侵权度娘背锅) Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有t ...

  3. BZOJ 1123 [POI2008]BLO(Tarjan算法)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1123 [题目大意] Byteotia城市有n个towns,m条双向roads. 每条r ...

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

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

  5. bzoj 1123 [POI2008]BLO Tarjan求割点

    [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1540  Solved: 711[Submit][Status][Discu ...

  6. BZOJ 1123: [POI2008]BLO( tarjan )

    tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ...

  7. BZOJ 1123: [POI2008]BLO

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

  8. BZOJ1123: [POI2008]BLO

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

  9. P3469 [POI2008]BLO-Blockade(Tarjan 割点)

    P3469 [POI2008]BLO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每 ...

  10. 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)

    P3469 [POI2008]BLO-Blockade https://www.luogu.org/problem/P3469 题目描述 There are exactly nn towns in B ...

随机推荐

  1. cesium Animation显示系统时间

    var d = new Date(); var hour = 0 - d.getTimezoneOffset(); viewer.animation.viewModel.timeFormatter = ...

  2. Ionic1开发环境配置ji

    配置Ionic1开发环境环境:windows7 32位+jdk1.8+ionic1.3,64位系统可以参考下面方法,软件注意选择对应的版本即可.    1.下载JDK并配置Java运行环境       ...

  3. 利用sfc文件构建网络渗透

      收集哈希 SCF(Shell命令文件)文件可用于执行一组有限的操作,例如显示Windows桌面或打开Windows资源管理器,这并不是什么新鲜事.然而,一个SCF文件可以用来访问一个特定的UNC路 ...

  4. python 对模块的应用你还得练点这些

    1.有如下字符串:n = "路飞学城"(编程题) - 将字符串转换成utf-8的字符编码的字节,再将转换的字节重新转换为utf-8的字符编码的字符串 - 将字符串转换成gbk的字符 ...

  5. 微信小程序学习笔记(阶段二)

    二阶段学习过程: (一)看官方文档的框架.组件.API:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看极客学院第3.4章视频:http://www.ph ...

  6. javascript中的null,对象系统还是非对象系统?

    1.一直以来的认知 在我学习js的过程中,爱民老师的绿皮书里将js的类型系统分成了两类: 其一是元类型系统:由typeof运算来检测 其二是对象类型系统:是元类型的object的一个分支 而null这 ...

  7. spring-data-redis使用哨兵配置一主多从

    redis自带的哨兵确实简化了高可用性的配置,使用起来也比较简单. 首先是spring-redis-sentinel.xml(文件名可以随意命名)配置文件: <?xml version=&quo ...

  8. centos7环境下mysql5.7的安装与配置

    最近无事闲来折腾虚拟机,以前都是折腾云服务器,现在自己捣捣.看到mysql的教程蛮好的,准备做个笔记.原文来自mysql5.7的安装与配置(centos7环境) 第一步:下载mysql [root@M ...

  9. ElasticSearch之 控制相关度原理讲解

    控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...

  10. css3 背景色 实现边框渐变运动动画

    css3 #body_id { animation: myfirst 10s ease-in-out -2s infinite alternate; /* Firefox: */ -moz-anima ...