1123: [POI2008]BLO

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2222  Solved: 1090
[Submit][Status][Discuss]

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

HINT

Source

题意:

极其简洁啊……

题解:

缩完点双后原图会变为一棵树。

每删掉一个割点,它的子树之间两两不能连接,子树与子树外的点两两不能连接。

然后惊奇的发现这题的点对要算上被删去的那个点。GG。

代码:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>using namespace std;
#define MAXN 100005
#define MAXM 500005
#define INF 0x7fffffff
#define ll long longll hd[MAXN],to[MAXM<<1];
ll nxt[MAXM<<1],siz[MAXN];
ll dfn[MAXN],low[MAXN];
ll N,M,ans[MAXN],cnt,num;inline ll read(){ll x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar())if(c=='-')f=-1;for(;isdigit(c);c=getchar())x=x*10+c-'0';return x*f;
}inline void tarjan(ll u){dfn[u]=low[u]=++num;ll cutnum=0;siz[u]=1;for(ll i=hd[u];i;i=nxt[i]){ll v=to[i];if(dfn[v]) low[u]=min(low[u],dfn[v]);else{tarjan(v);siz[u]+=siz[v];low[u]=min(low[u],low[v]);if(dfn[u]<=low[v]){ans[u]+=(cutnum*siz[v]);cutnum+=siz[v];}}}ans[u]+=(cutnum*(N-cutnum-1));return;
}inline void addedge(ll u,ll v){to[++cnt]=v,nxt[cnt]=hd[u];hd[u]=cnt;return;
}int main(){N=read(),M=read();for(ll i=1;i<=M;i++){ll u=read(),v=read();addedge(u,v),addedge(v,u);}for(ll i=1;i<=N;i++)if(!dfn[i])tarjan(i);for(ll i=1;i<=N;i++)printf("%lld\n",ans[i]*2+(N-1)*2);return 0;
}

转载于:https://www.cnblogs.com/YSFAC/p/9914640.html

【bzoj1123】BLO相关推荐

  1. 【BZOJ1123】[POI2008]BLO【割顶】

    [题目链接] 题意可见discuss. 用Tarjan求割顶,然后对割顶的所有子树求点对个数(前缀和扫一遍),最后把自身和其他点的答案加上. 没注意边,数组开小了. /* Pigonometry */ ...

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

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

  3. 【bzoj1123】[POI2008]BLO

    *题目描述: Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. *输入 输入n<=1000 ...

  4. 【sqlplus】SQL*Plus命令使用大全

    [sqlplus]SQL*Plus命令使用大全 SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具.在sql*plus中,可以运行 sql*plus命令 ...

  5. 【OH】SET System Variable Summary SQLPLUS 系统变量设置

    [OH]SET System Variable Summary SQLPLUS 系统变量设置 SET System Variable Summary System Variable Descripti ...

  6. 【转载】C++跑酷小游戏

    [说明]转载于C++跑酷小游戏_蒟蒻一枚的博客-CSDN博客_c++跑酷小游戏 感谢@蒟蒻一枚 直接上代码 #include<bits/stdc++.h> #include<wind ...

  7. Linux内核启动流程分析(二)【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3380544.html S3C2410 Linux 2.6.35.7启动分析(第二阶段) 接着上面的分析,第 ...

  8. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  9. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

最新文章

  1. 强网杯2021 BlueTeaming (内存取证)
  2. 我的.Net+SQLServer更新设计
  3. vue连线 插件_一起写一个即插即用的 Vue Loading 插件
  4. Redhat_as4_oracle10g自启动脚本设置
  5. Spring Boot 邮件发送多个收件人
  6. CCS7.0从安装到使用
  7. IMX6 dts 配置GPIO
  8. 双拼输入法是个啥以及我是如何学会使用它的
  9. 如何在uni-app中引入iconfont图标
  10. 宕昌一中2021高考成绩查询,有朋自远方来 | 甘肃省陇南市宕昌一中来广元中学考察交流...
  11. html直线箭头,HTML中利用div+CSS实现简单的箭头图标的代码
  12. 每日一题----空瓶子喝可乐问题
  13. 关于Mybatisplus查询到字段无法映射的问题
  14. Codeforces #199前三题
  15. cad卸载_这几款逆天的CAD插件,好用得不行,死也不可能卸载!
  16. 一起吃苦的时光,那一碗馄饨
  17. 《lwip学习9》-- UDP协议
  18. 锂电池UL1642检测报告储能电源美国安规标准锂蓄电池UL报告 IEC62133安规检测
  19. 计算机弹奏月亮之上,二胡独奏曲谱牧歌_速求草原牧歌二胡曲谱
  20. 【论文翻译】(摘要及引言)The Fourier decomposition method for nonlinear and non-stationary time series analysis

热门文章

  1. C99中的restrict关键字
  2. css——三角形的实现
  3. 人体的矢状面,冠状面,以及水平面,你懂吗?
  4. C++贪心算法之最小新整数
  5. 彻底搞懂BLDC与PMSM的区别
  6. C#利用Microsoft.Office.Interop.Excel导出excel文件
  7. 15【存储过程和存储函数】
  8. kdevelop 安装
  9. 利用Ansj进行新闻关键词提取
  10. 全球酷站秀:15个顶尖的 CSS3 网站作品