bzoj1123 求割点+乘法原理
来源:互联网 发布:守望先锋mac能玩吗 编辑:程序博客网 时间:2024/06/14 20:23
题目戳这里:http://www.lydsy.com/JudgeOnline/problem.php?id=1123
1123: [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
题目大意就是去掉每个点,询问不连通的点对有多少组。这道题我们在求割点的基础上,存一下每个连通块的大小,然后乘法原理计算一下就好了,注意要算上这个点本身会与n-1个点不连通,并且答案要乘2因为点对(a,b)和点对(b,a)算两个,答案long long保存。
代码:
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define N 100005#define M 500005#define dnt long long#define del(a,b) memset(a,b,sizeof(a))using namespace std;int n,m,num,head[N],a,b;struct Edge{ int v,next;};Edge e[10*M];void adde(int i,int j){ e[++num].v=j; e[num].next=head[i]; head[i]=num;}int siz[N],dfn[N],low[N],idc;dnt ans[N];void tarjan(int u,int fa){ siz[u]=1; dfn[u]=low[u]=++idc; dnt rt=0,cnt=0; for(int i=head[u];i;i=e[i].next){ int v=e[i].v; if(v==fa)continue; if(!dfn[v]){ tarjan(v,u); siz[u]+=siz[v]; low[u]=min(low[u],low[v]); if(low[v]>=dfn[u]){ cnt+=(dnt)(siz[v])*rt; rt+=(dnt)(siz[v]); } }else low[u]=min(low[u],dfn[v]); } cnt+=(n-1-rt)*rt; ans[u]=cnt;}int main(){ memset(ans,0,sizeof(ans)); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d",&a,&b); adde(a,b); adde(b,a); } tarjan(1,-1); for(int i=1;i<=n;i++) printf("%lld\n",(ans[i]+n-1)*2); return 0;}
阅读全文
0 0
- bzoj1123 求割点+乘法原理
- bzoj1123 [POI2008]BLO(tarjan求割点)
- bzoj1123 BLO
- 加法原理乘法原理
- pku 2346 乘法原理
- 乘法原理之应用
- 乘法计数原理
- CUDA:矩阵乘法原理
- 二进制乘法原理
- HDU5525(乘法原理)
- Lightoj1028 【数学-乘法原理】
- 加法原理与乘法原理
- 加法原理与乘法原理
- 加法原理和乘法原理
- 【bzoj1123】[POI2008]BLO
- BZOJ1123: [POI2008]BLO
- BZOJ1123: [POI2008]BLO
- BZOJ1123: [POI2008]BLO
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
- against parallel execution in shell (flock)
- 安装Lua
- 闭包初体验
- Python006循环和遍历列表元组集合字典
- bzoj1123 求割点+乘法原理
- dyld: could not load inserted library 'dumpdecrypted.dylib' because no suitable image found.
- 排序算法之堆排序
- servlet下一个页面获取上一个页面的信息
- 深拷贝与Serializable简介
- overlay fs挂载及操作测试
- Android数据序列化方案研究
- IDL输出Excel中直接列分隔的txt文件方法
- 搜索手机里面的所有App,找到其中一个并启动