[POI2008]BLO

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

考虑到求图中的割点。

图中有两种点

\(1.\)该点不为割点,由割点定义,切掉该点后,剩下的\(n-1\)个点仍然联通,所以答案为\(2*(n-1)\)。

\(2.\)该点为割点,所以,在切掉该点后,图中会出现若干个联通块,我们需要求出每个联通块的大小,两两相乘再相加

我们不妨在\(tarjan\)的过程中,搜索出每棵“子树”的\(size\)。

综上所述,在删除掉一个割点\(i\)后,不联通的有序对数量为:

\(size[S1]*(n-size[S1])+size[S2]*(n-size[S2])+...+size[St]*(n-size[St])+2*(n-1)+(n-size[i])*(size[i]-1)\)

#include<bits/stdc++.h>
#define lll long long
using namespace std;
int read()
{
int x=0,w=1;char ch=getchar();
while(ch>'9'||ch<'0') {if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*w;
}
const int N=100010;
int n,m,cnt,visnum,x,y;
int head[N],dfn[N],low[N],cut[N],size[N];
lll ans[N];
struct node{
int to,next;
}edge[10*N];
void add(int x,int y)
{
cnt++;edge[cnt].to=y;edge[cnt].next=head[x];head[x]=cnt;
}
void tarjan(int k,int fa)
{
dfn[k]=low[k]=++visnum;int flag=0;lll num=0;
for(int i=head[k];i;i=edge[i].next)
{
int v=edge[i].to;if(v==fa) continue;
if(!dfn[v])
{
tarjan(v,k);low[k]=min(low[k],low[v]);size[k]+=size[v];
if(dfn[k]<=low[v])
{
flag++;
if(fa!=0||flag>1)
{
cut[k]=1;ans[k]+=(lll)size[v]*num;
num+=size[v];
}
}
}
else low[k]=min(low[k],dfn[v]);
}
ans[k]+=(lll)((n-num-1)*num);
size[k]++;
}
int main()
{
n=read();m=read();
for(int i=1;i<=m;i++)
{
x=read();y=read();
add(x,y);add(y,x);
}
for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i,0);
for(int i=1;i<=n;i++) printf("%lld\n",2*(ans[i]+n-1));
}

最新文章

  1. memcache和redis区别
  2. js:方法3. 对象
  3. 论文笔记之: Hierarchical Convolutional Features for Visual Tracking
  4. Java for LeetCode 077 Combinations
  5. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面
  6. AVCaptureDevice
  7. 国产CPU研究单位及现状
  8. 3.6 spring-construction-arg 子元素的使用与解析
  9. NGU-学习笔记(1)-动态添加删除图集
  10. the identity used to sign the executable is no longer valid.解决方法
  11. 仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
  12. Xcode 插件优缺点对比(推荐 20 款插件)
  13. 【BZOJ4530】大融合(Link-Cut Tree)
  14. DateTimeFormat
  15. git clone git@github.com:snuglove/ 报错
  16. [问题解决]eclipse.ini 文件配置jdk版本
  17. UVA1627-Team them up!(动态规划)
  18. PYthon end
  19. .NET 互联网技术简介
  20. Could not load file or assembly &#39;Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, ...

热门文章

  1. [BZOJ3236][AHOI2013]作业:树套树/莫队+分块
  2. idea生成get/set方法
  3. jsp页面a标签URL转码问题
  4. 5-2 Django的路由层(urlconf) 2
  5. jQuery实现三级联动菜单(鼠标悬停联动)
  6. p2p传输协议
  7. MySQL主主模式
  8. 杂项-站点:SharePoint
  9. django中自定义404错误页面
  10. 搭建 Git 服务器(基于 CentOS 7)