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