题目链接

题意:一个无向联通图,求删去每个点及其所有边后有多少有序点对的连通性发生了变化。

Tarjan求割点的例题。。

如果当前点不是割点,那么它对整个图的连通性不产生影响,只有自己与其他\(n-1\)个点的连通性发生了变化,故答案为\((n-1)\times2\)。

如果当前点是割点,那么除了自身外,它所连接的所有连通块和其他连通块之间的连通性都发生了变化,故答案为:

设\(size[u]\)表示以u为根的连通块的大小,与当前点相连的共有\(k\)个连通块,

\[ans=\sum_{i=1}^{k}[size[i]\times(n-size[i])]+(n-1)+(n-1-\sum_{i=1}^{k}size[i])\times(\sum_{i=1}^{k}size[i]+1)
\]

#include <cstdio>
#include <algorithm>
using std::min;
const int MAXN = 100010;
const int MAXM = 500010;
struct Edge{
int next, to;
}e[MAXM << 1];
int num, head[MAXN];
inline void Add(int from, int to){
e[++num] = (Edge){ head[from], to };
head[from] = num;
}
int dfn[MAXN], low[MAXN], size[MAXN];
long long ans[MAXN];
int id, n, m;
void Tarjan(int u){
dfn[u] = low[u] = ++id;
size[u] = 1;
int flag = -1, sum = 0;
for(int i = head[u]; i; i = e[i].next){
if(!dfn[e[i].to]){
Tarjan(e[i].to);
size[u] += size[e[i].to];
low[u] = min(low[u], low[e[i].to]);
if(low[e[i].to] >= dfn[u]){
ans[u] += (long long)size[e[i].to] * (n - size[e[i].to]);
sum += size[e[i].to];
if(u != 1 || ++flag)
flag = 100000;
}
}
else low[u] = min(low[u], dfn[e[i].to]);
}
if(flag != 100000) ans[u] = (n - 1) << 1;
else ans[u] += (long long)(n - sum - 1) * (sum + 1) + n - 1;
}
int a, b;
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++i){
scanf("%d%d", &a, &b);
Add(a, b); Add(b, a);
}
Tarjan(1);
for(int i = 1; i <= n; ++i)
printf("%lld\n", ans[i]);
return 0;
}

最新文章

  1. android 一些常用开源框架
  2. Wakez计算与压缩的思考
  3. Ubuntu下三个实用的录屏软件
  4. JavaScript基础插曲—获取标签,插入元素,操作样式
  5. C/C++宏中#与##的讲解
  6. Java实现多线程的两种方式
  7. Docker跨主机通信之路由
  8. [GUI]界面开发类库-Ribbon风格 [转]
  9. pendingIntent初步_什么是pendingIntent
  10. DXGI快速截屏录屏技术
  11. Jetson TX1使用usb camera采集图像 (1)
  12. sed命令(二)
  13. Harbor私有镜像仓库(上)
  14. javascript之location详解
  15. ARM内核版本号和SOC版本号
  16. chrome添加 postman扩展程序图文简介
  17. 【刷题】HDU 1853 Cyclic Tour
  18. Objective-C-Category类别
  19. ZOJ 3379 Master Spark
  20. CheckBox全选、取消全选

热门文章

  1. Sleuth+Zipkin+Log
  2. 教程|要想Hadoop能够运行Python程序,就要会MRJob
  3. git安装后Gitbase闪退,gui无法使用问题解决
  4. kubernetes(k8s) 集群
  5. 剑指offer:跳台阶
  6. exec族
  7. 关于org.springframework.web.filter.CharacterEncodingFilter的学习
  8. linux基本操作2
  9. can be found for element &#39;tx:annotation-driven&#39;
  10. BZOJ4488 JSOI2015最大公约数