题意:

给出一个n个点m条边的无向图;

求将每个点的所有边删去之后,这个图中的不能到达的点对数;

n<=100000,m<=500000;

题解:

Poi~

要做这题首先样例要看懂= =;

显然不能到达的点对数=n*n-能到达的点对数;

而对于每个连通块来说,能到达的点数为块内点数的平方;

那么就对于一个点,统计删去边后,每个连通块的大小;

所以构造DFS树,所有的非树边都是返祖边;

记录所有点的深度deep,子树大小size,和它与它的子树的返祖边,能到达最小深度top;

那么统计答案时枚举枚举儿子;

如果儿子有高于它的返祖边,那么这颗子树与父树连通,记录父树连通块大小;

由于儿子的子树之间不可能有非树边连通,那么如果儿子没有返祖边就直接记录,ans-=size*size;

最后将父树连通块的点对数减去就好;

注意开long long,别忘了它自身也是一个连通块;

时间复杂度O(n),这个算法似乎是Tarjan。。

但是最近遇到的Tarjan都被改的不成样子= =(或者说都被DFS树水过去了)

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 131072
#define M 1010000
using namespace std;
typedef long long ll;
int next[M],to[M],head[N],ce;
int n,size[N],top[N],deep[N],tot;
ll ans[N];
void add(int x,int y)
{to[++ce]=y;next[ce]=head[x];head[x]=ce;
}
void tarjan(int x,int fa)
{top[x]=deep[x]=deep[fa]+1;size[x]=1;int i,y;for(i=head[x];i;i=next[i]){if(!deep[y=to[i]])tarjan(y,x),top[x]=min(top[y],top[x]),size[x]+=size[y];elsetop[x]=min(top[x],deep[y]);}ans[x]=(ll)n*n-1;int temp=n-size[x];for(i=head[x];i;i=next[i]){if(deep[y=to[i]]==deep[x]+1){if(top[y]<deep[x])temp+=size[y];elseans[x]-=(ll)size[y]*size[y];}}ans[x]-=(ll)temp*temp;
}
int main()
{int m,i,j,k,x,y,fx,fy;scanf("%d%d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&x,&y);add(x,y),add(y,x);}tarjan(1,0);for(i=1;i<=n;i++){printf("%lld\n",ans[i]);}return 0;
}

bzoj-1123 BLO相关推荐

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

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

  2. 【UOJ】67 新年的毒瘤 【BZOJ】1123 BLO

    [UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼--这什么鬼. 思考什么点复合条件--(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...

  3. BZOJ 1123: [POI2008]BLO

    Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. 删去某点后会出现点对不连通的情况,那么这个点一 ...

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

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

  5. BZOJ 1123 POI2008 BLO Tarjan+树形DP

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

  6. BZOJ 1123 Luogu P3469 [POI2008]BLO-Blockade 割点+乘法原理

    想了半天式子...最后在邓大师的帮助下想出此题....QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= #include<cstdio> #incl ...

  7. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  8. 1123: [POI2008]BLO

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

  9. 【bzoj1123】BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2222  Solved: 1090 [Submit][Stat ...

  10. bzoj 2330 / AcWing 368 银河 差分约束系统+tarjan缩点+拓扑排序

    怎么最近bzoj一直上不了,莫非是挂了? AcWing的地址:https://www.acwing.com/problem/content/370/ 题意: 银河中的恒星浩如烟海,但是我们只关注那些最 ...

最新文章

  1. 爬虫之利用requests.session进行状态保持
  2. python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...
  3. 你尝试登录的服务器语言不通,七骑士国内服务器正式上线后,各种登录问题解决方案汇总...
  4. Adding Keyword And Description meta tags to each page by inheritence
  5. Leetcode打卡 | No.24 两两交换链表中的节点
  6. 20200723:198周周赛学习记录
  7. 判别模型、生成模型和朴素贝叶斯模型
  8. Ubuntu18.04关闭ibus-daemon自启动
  9. cf519C. A and B and Team Training(找规律)
  10. win7企业版激活秘钥激活kms安装激活教程
  11. Geek卸载,Windows电脑再无卡顿
  12. 音视频开发系列(49)视频编码标准发展史
  13. 关于ios9中得AddressBook和AddressBookUI框架过时问题
  14. Excel:表格中重复项的处理
  15. 华为防火墙的策略路由
  16. 石墨笔记, Onenote 和 Effie 哪个适合单口或脱口秀作者?
  17. Ubuntu下安装RabbbitVCS(图形化svn管理工具)-- Ubuntu也有TortoiseSVN
  18. 7款功能超牛的电脑软件,分分钟提高效率!
  19. GORM报错sql: Scan called without calling Next
  20. python中的时间处理模块(二):datetime模块之timedelta类详解

热门文章

  1. CGAL的安装与在VS中的配置
  2. 解决Mac无法关闭80端口,无法将hosts域名指向本地80端口
  3. Java发送QQ邮件问题Could not connect to SMTP host: smtp.qq.com, port: 465(内附完整代码)
  4. 广域网技术——SR-MPLS技术基础理论讲解
  5. 亚马逊鲲鹏系统详细功能介绍
  6. React全家桶(技术栈) 代码资料
  7. 漫步数理统计三十——依概率收敛
  8. 数字图像处理:图像金字塔
  9. 6 Vue 原理(SY)
  10. C++之适配器(以优先队列为例)