#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; typedef long long ll;
const int maxn = 1e5 + ;
const int maxm = 5e5 + ;
int dfn[maxn], low[maxn], head[maxn];
ll ans[maxn], siz[maxn];
int n, m, tot, num, root;
bool cut[maxn];
struct edge{
int to, next;
} ed[*maxm];
inline void init(){
memset( head, -, sizeof(head) );
memset( dfn, , sizeof(dfn) );
memset( cut, false, sizeof(cut) );
memset( ans, , sizeof(ans) );
num = ;
tot = ;
} inline int min( int a, int b ){
return a<b ? a:b;
} inline void add( int u, int v ){
tot ++;
ed[tot].to = v;
ed[tot].next = head[u];
head[u] = tot;
} inline void tarjan( int u ){
dfn[u] = low[u] = ++num;
siz[u] = ;
int flag = , sum = ;
for( int i=head[u]; i!=-; i=ed[i].next ){
int v = ed[i].to;
if( !dfn[v] ){
tarjan(v);
siz[u] += siz[v];      //计算子树的点个数
low[u] = min(low[u], low[v]);
if( dfn[u]<=low[v] ){
flag ++;
ans[u] += (ll)siz[v]*(n-siz[v]);    //if(cut[i]) ans = (i的子树, 除该子树的其他部分)的点对和
sum += siz[v];
if( u!=root || flag> ) cut[u] = true;
}
}else low[u] = min(low[u], dfn[v]);
}
if( cut[u] ) ans[u] += (ll)(n-sum-)*(sum+) + (n-);  //如果去掉的点i是割点ans继续累加上(其他部分,i和i的子树)点对 + (i, 除i的其他部分)点对
else ans[u] = *(n-);              //if(!cut[i]) ans = 2*(n-1)
} int main(){
scanf("%d%d", &n, &m);
init();
for( int i=; i<m; i++ ){
int u, v;
scanf("%d%d", &u, &v);
add( u, v );
add( v, u );
}
root = ;
tarjan();
for( int i=; i<=n; i++ )
printf("%lld\n", ans[i]); return ;
}
/*Sample Input
5 5
1 2
2 3
1 3
3 4
4 5
Sample Output
8
8
16
14
8
*/

BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)的更多相关文章

  1. poj 3694双联通缩点+LCA

    题意:给你一个无向连通图,每次加一条边后,问图中桥的数目. 思路:先将图进行双联通缩点,则缩点后图的边就是桥,然后dfs记录节点深度,给出(u,v)使其节点深度先降到同一等级,然后同时降等级直到汇合到 ...

  2. hdu 4612 双联通缩点+树形dp

    #pragma comment(linker,"/STACK:102400000,102400000")//总是爆栈加上这个就么么哒了 #include<stdio.h> ...

  3. BZOJ1123: [POI2008]BLO

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

  4. Codeforces 1000 组合数可行线段倒dp 边双联通缩点求树直径

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std ...

  5. BZOJ1123:[POI2008]BLO(双连通分量)

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  6. bzoj1123 [POI2008]BLO——求割点子树相乘

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 思路倒是有的,不就是个乘法原理吗,可是不会写...代码能力... 写了一堆麻麻烦烦乱七 ...

  7. [BZOJ1123]:[POI2008]BLO(塔尖)

    题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...

  8. 【dfs+连通分量】Bzoj1123 POI2008 BLO

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  9. 边的双联通+缩点+LCA(HDU3686)

    Traffic Real Time Query System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  2. java HttpClientHelper

    1 首先配置pom.xml,具体参考我的这篇文章:使用httpclient需要的maven依赖 2 上代码 import java.io.IOException; import java.io.Inp ...

  3. IntelliJ IDEA重新打开后把字母隐藏怎么办

    默认Font的字体melno不行,r会隐形 解决方案:更换idea字体,点击apply按钮即可正常显示 修改Font为的consoleas  Size:16   line spacing:1.25

  4. unity 在editor编辑器下创建多个按钮

    入坑最后发现就几句话,真是气死人了.发现自己掉坑里,脑子就变笨了,把代码贴给你们,保持大脑清醒. using System.Collections; using System.Collections. ...

  5. HashMap、HashTable与ConcurrentHashMap的区别

    1.HashTable与HashMap (1)HashTable和HashMap都实现了Map接口,但是HashTable的实现是基于Dictionary抽象类. (2)在HashMap中,null可 ...

  6. centos 7 下使用jexus 配置ASP.NET Core

    1.安装jexus Jexus独立版(专业版)的安装 Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linu ...

  7. updatetable 违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条造成问题一种原因

    数据库 表A ID  UserName DeptID DeptName 1      张三          1          技术部 表B ID   DeptName 1      市场部 当使 ...

  8. MySQL开发技巧 第二禅(子查询中匹配两个值、解决同属性多值过滤的问题、计算累进税的问题)

    https://blog.csdn.net/xiesq5112/article/details/52154169

  9. MySQL表关系--外键

    一.外键前戏 如果我们把所有的信息都记录在一张表中会带来的问题: 1.表的结构不清晰 2.浪费磁盘空间 3.表的扩展性极差 所以我们要把这种表拆成几张不同的表,分析表与表之间的关系. 确定表与表之间的 ...

  10. Python之路【第二十九篇】:django ORM模型层

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...