BLO

内存限制:162 MiB 时间限制:1000 ms 标准输入输出
 
 

题目描述

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

首先如果这个点不是割点,那么显然该点删去后对除了此点以外所有点之间的点对关系不造成影响,影响的只是当前点与其他点之间点对。所以贡献$2*(n-1)$

然后如果这个点是个割点,这个点可以分割后具体可以分成这几部分,

一,直接与原图相连的连通块

二,图剩余部分

三,节点自身

考虑这三部分的贡献

对于二:

它与除了连通块外点构成点对都被拆散

那么贡献为$size[y]\times (n-size[y])$

我们算的是单方向点对

对于三:

它分割以后与其他所有点点对都被拆散

对于一:

我们用一个小容斥,然后贡献类似于二

完了

以下依然是本人丑陋的代码

#include<bits/stdc++.h>
#define ll long long
#define A 1000000
#define read(a) scanf("%lld",&a)
#define put(a) printf("%lld\n",a)
using namespace std;
ll low[A],size[A],dfn[A],head[A],ver[A],nxt[A],tot=0,cut[A],ans[A];
ll n,m,num=0,root;
void add(ll x,ll y){
ver[++tot]=y;nxt[tot]=head[x];head[x]=tot;return ;
}
void tarjan(ll x){
low[x]=dfn[x]=++num;size[x]=1;
ll flag=0,sum=0;
//若不为割点ans可以被其他n-1个点贡献
//若为割点ans可以由剩余n-sum-1个点贡献以及这个点不能到达其他任何点以及其他与x直接连接点到达不了其他点
for(ll i=head[x];i;i=nxt[i]){
ll y=ver[i];
if(!dfn[y]){
tarjan(y);
size[x]+=size[y]; low[x]=min(low[x],low[y]);
if(low[y]>=dfn[x]){
flag++;sum+=size[y];ans[x]+=size[y]*(n-size[y]);
if(x!=root||flag>1){
cut[x]=1;
}
}
}
else low[x]=min(low[x],dfn[y]);
}
if(cut[x]) ans[x]+=(n-sum-1)*(sum+1)+n-1;//,printf("贡献ans[%lld]=%lld\n",x,ans[x]);
else ans[x]=2*(n-1);//,printf("贡献ans[%lld]=%lld 2*(n-1)=%lld\n",x,ans[x],2*n-1);
}
int main(){
read(n),read(m);
for(ll i=1;i<=m;i++){
ll xx,yy;read(xx),read(yy);add(xx,yy);add(yy,xx);
}
for(ll i=1;i<=n;i++)
if(!dfn[i])root=i,tarjan(i);
for(ll i=1;i<=n;i++){
//printf("size[i]=%lld cut[%lld]=%lld\n",size[i],i,cut[i]);
put(ans[i]);
}
}

注意

            if(low[y]>=dfn[x]){
flag++;sum+=size[y];ans[x]+=size[y]*(n-size[y]);
if(x!=root||flag>1){
cut[x]=1;
}
}

中sum ans都要放在判断割点之上,因为我们算的在根上也要照常计算

BLO的更多相关文章

  1. 【BZOJ-1123】BLO Tarjan 点双连通分量

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 970  Solved: 408[Submit][Status][ ...

  2. BZOJ 1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1030  Solved: 440[Submit][Status] ...

  3. BZOJ1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 614  Solved: 235[Submit][Status] ...

  4. BZOJ 1123: [POI2008]BLO( tarjan )

    tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ...

  5. bzoj 1123 [POI2008]BLO Tarjan求割点

    [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1540  Solved: 711[Submit][Status][Discu ...

  6. 【bzoj1123】BLO

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

  7. [POI2008]BLO(Tarjan)

    [POI2008]BLO Description Byteotia城市有\(n\)个 towns \(m\)条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所 ...

  8. BZOJ 1123 BLO

    tarjan求割点计算答案.注意不是每一棵子树都算答案.开个变量记一下. #include<iostream> #include<cstdio> #include<cst ...

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

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

随机推荐

  1. SQL注入:Sqlmap初体验

    目录 sqlmap 安装 查看帮助文档 中文文档 直连数据库 服务型数据库(mysql) 文件型数据库(sqlite) 初级实战 1. 扫描注入点 2. 根据注入点查到全部数据库 --dbs 3. 根 ...

  2. Spring MVC工作原理及源码解析(四) ViewResolver实现原理及源码解析

    0.ViewResolver原理介绍 根据视图的名称将其解析为 View 类型的视图,如通过 ModelAndView 中的视图名称将其解析成 View,View 是用来渲染页面的,也就是将 Mode ...

  3. 北航OO(2020)第四单元博客作业暨学期总结

    一.第四单元架构设计 1.第一次作业 我在本次作业中设置了多个储存结构:Directory,ElementsInName,ElementsInId,Cache. Directory: 顾名思义,这是个 ...

  4. Tomcat的使用和配置

    Tomcat的使用 安装 在tomcat官网找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可 目录介绍 bin : 专门用来存放Tomcat服务器的可执行文件 con ...

  5. [bug] MySQL: The user specified as a definer ('root'@'%') does not exist

    错误1 gciantispider.getchildlst does not exist 原因 getchildlst创建失败 解决 在mysql中设置mysqld中加上log_bin_trust_f ...

  6. [刷题] PTA 6-11 求自定类型元素序列的中位数 (25分)

    采用希尔排序 1 #include <stdio.h> 2 3 #define MAXN 10 4 typedef float ElementType; 5 6 ElementType M ...

  7. [笔记] 《c++ primer》书店程序 Chapter2

    Sales_data.h 1 #ifndef SALES_DATA_H 2 #define SALES_DATA_H 3 4 #include "Version_test.h" 5 ...

  8. [刷题] 219 Contains Duplicate II

    要求 给出整型数组nums和整数k,是否存在索引i和j,nums[i]==nums[j],且i和j之间的差不超过k 思路 暴力解法(n2) 建立最长为k+1的滑动窗口,用set查找窗口中是否有重复元素 ...

  9. zabbix官方源替换为阿里云的zabbix源,一键脚本。(安装zabbix报错curl#18 - "transfer closed with 2988713 bytes remaining to read":15 ETA Trying other mirro)

    最近突然安装zabbix总是报错,比如 (24/27): t1lib-5.1.2-14.el7.x86_64.rpm | 166 kB 00:00:00 zabbix-web-4.4.6-1.el7. ...

  10. 如果你想设置无人自动升级,我们推荐你将这个值修改为security,它会告诉 yum 仅仅升级修复安全问题的软件包。

    定期升级你的 CentOS 系统,是所有系统安全中最重要的措施之一.如果你不使用最新的安全补丁升级你的操作系统软件包,你将会让你的机器很容易被攻击. 如果你管理者多个 CentOS 机器,手动升级系统 ...