[POI2008]BLO
时间限制: 1 Sec 内存限制: 162 MB
提交: 56 解决: 30
[提交][状态][讨论版]
题目描述
Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通。

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

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

样例输入
5 5
1 2
2 3
1 3
3 4
4 5
样例输出
8
8
16
14
8

可以发现,如果一个点是割点,所有被他割断的子节点都会对答案产生贡献(就是这个sz[son]×(n-1-sz[son])),只要最后<<1就好了。
黄学长的做法极其简单,树规,点双连通分啥的都没必要。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#define N 1000005
#define ll long long
using namespace std;
struct road{int v,next;}lu[N*10];
int n,m,e,adj[N],cnt,dfn[N],low[N];
ll ans[N],sz[N];
inline void add(int u,int v){lu[++e]=(road){v,adj[u]};adj[u]=e;}
inline void gmin(int &x,int y){if(y<x)x=y;}
void tarjan(int x)
{ll sum=0;low[x]=dfn[x]=++cnt;sz[x]=1;for(int i=adj[x];i;i=lu[i].next){int to=lu[i].v;if(!dfn[to]){tarjan(to);sz[x]+=sz[to];gmin(low[x],low[to]);if(dfn[x]<=low[to]){ans[x]+=sum*sz[to];sum+=sz[to];}}else gmin(low[x],dfn[to]);}ans[x]+=sum*(n-sum-1)*1ll;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1,x,y;i<=m;i++){scanf("%d%d",&x,&y);add(x,y);add(y,x);}tarjan(1);for(int i=1;i<=n;i++)printf("%lld\n",(ans[i]+(n-1)*1ll)<<1);
}

tarjan BLO相关推荐

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

    tarjan判断割点...拿掉一个点之后,会被分成若干个联通块,用节点个数和统计一下他们相互不能到达的个数就好. 1 const maxn=100419; 2 maxm=1000419; 3 type ...

  2. bzoj 1123: [POI2008]BLO (tarjan求点双+树形DP)

    题目描述 传送门 题目大意:给出一个无向连通图,求删去一个点后有多少点对不连通. 题解 tarjan求点双,然后对于点双新建节点,并连接所有点双中的节点,形成一棵树后进行树形DP即可. 代码 #inc ...

  3. [BZOJ1123][POI2008]BLO(tarjan求点双+树形dp)

    题目描述 传送门 题目大意:给出一个n个点m条边的无向连通图,问去掉每一个点之后存在多少点对不连通. 题解 tarjan求点双联通分量,对于每一个点双建立一个虚拟的节点,然后将这个点双的所有节点都连接 ...

  4. BZOJ 1123 POI2008 BLO Tarjan+树形DP

    题目大意:给定一张无向图,求每个点被封锁之后有多少个有序点对(x,y)(x!=y,1<=x,y<=n)满足x无法到达y 还是看原题面爽... Tarjan求点双,然后TreeDP即可 时间 ...

  5. 2018.11.09 codeforces487E. Tourists(tarjan+树链剖分)

    传送门 先把边双连通分量用圆方树一样的方法缩点,然后把新建的树树剖维护. 注意对于边双连通分量需要维护动态最小值,可以用multisetmultisetmultiset. 代码: #include&l ...

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

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

  7. 1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MB 链接:https://www.lydsy.com/JudgeOnline/pro ...

  8. bzoj 1123: [POI2008]BLO(Trajan求割点)

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1468  Solved: 678 [Submit][Statu ...

  9. 海亮DAY8 关于Tarjan算法用于割点割边相关感受

    Tarjan 简介 Tarjan算法在求割点,割边,连通分量方面及其高效,在军事,交通,设计等方面有重要作用. 由于Tarjan算法思想并不难懂,在此不放上Tarjan算法的具体介绍. [Usaco2 ...

最新文章

  1. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
  2. DNS通道检测 国内学术界研究情况——研究方法:基于特征或者流量,使用机器学习决策树分类算法居多...
  3. cmd上写的java简单代码_用cmd编辑一个超级简单的小游戏,求代码
  4. 典型的简单权限分配系统方法介绍
  5. fast路由器服务器未响应,win7系统下fast路由器进不了设置界面如何解决
  6. PHP笔记-订货单例子
  7. 04-windows下Orcale的启动
  8. Notepad ++添加到每一行
  9. linux xargs命令_如何在Linux中使用xargs命令?
  10. 常见不等式考察(一)——Jensen不等式
  11. python实现逻辑回归算法
  12. 如何更改itunes备份位置_Win10系统怎样设置itunes备份位置
  13. JPA注解@Enumerated映射枚举字段
  14. 2017报计算机热不热,【2017年10月份热吗】2017年10月份热不热_亲亲宝贝网
  15. java.lang.Byte cannot be cast to java.lang.Integer,sql 到 java 类型转换遇到的问题
  16. 【数学】微分(Differential)的定义,微分与导数的区别
  17. sublime指定python版本
  18. PB实现国密SM2/SM3/SM4算法(DLL方式)
  19. Chrome安装插件Save All Resources
  20. 基于Springboot社区居民健康档案管理系统 毕业设计-附源码220940

热门文章

  1. xadmin里面的设置
  2. JAVA项目的目录结构分析
  3. Neutral Graph Collaborative Filtering——论文提炼
  4. maplesim matlab,MapleSim 2020
  5. 基于Linux+ARM的远程视频监控--硬件篇
  6. mysql基础约束详解
  7. D-OJ刷题日记:将十进制数转换成八进制数 题目编号:545
  8. 前美团COO干嘉伟:好的管理,打得、骂得,又哄得
  9. 适配器模式(对象适配器)
  10. 什么是进程,进程的特征