题目链接
题意:一个无向联通图,求删去每个点及其所有边后有多少有序点对的连通性发生了变化。
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;
}

转载于:https://www.cnblogs.com/Qihoo360/p/9526531.html

【洛谷 P3469】[POI2008]BLO-Blockade(割点)相关推荐

  1. 洛谷P3469 [POI2008]BLO-Blockade(割点过程计算bcc)

    思路:去掉点 i i i后,其他点无论如何都无法到达它了,所以答案首先是 2 ∗ ( n − 1 ) 2*(n-1) 2∗(n−1). 其次,考虑这个点去掉之后,是否会造成一个点无法到达其他点了呢?也 ...

  2. 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)

    P3469 [POI2008]BLO-Blockade https://www.luogu.org/problem/P3469 题目描述 There are exactly nn towns in B ...

  3. 洛谷 P3469 [POI2008]BLO-Blockade

    思路 这个题有点吓人呢先在这里默认大家都会tarjan找割点了哈 如果你跑tarjantarjantarjan找割点然后把割点删掉跑bfsbfsbfs找连通块,这个O(n2)O(n^2)O(n2)显然 ...

  4. 洛谷 P3388 【模板】割点(割顶) 根+非根+dfn[]+low[]+不一样的Tarjan算法

    洛谷  P3388 [模板]割点(割顶)  根+非根+dfn[]+low[]+不一样的Tarjan算法 Tarjan算法,详见https://blog.csdn.net/mrcrack/article ...

  5. 洛谷 P3466 [POI2008]KLO-Building blocks

    洛谷 P3466 [POI2008]KLO-Building blocks 题目: 英文.转链接 题解: fhq-treap,按权分裂. 题目要求"连续K柱的高度是一样",那么这个 ...

  6. 「洛谷P3469」[POI2008]BLO-Blockade 解题报告

    P3469[POI2008]LO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个 ...

  7. [Tarjan][割点] 洛谷 P3469 BLO-Blockade

    题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个城镇之间至多只有一条直接连接的道路.人们可以从任意一 ...

  8. 解题报告:luogu P3469 [POI2008]BLO-Blockade(割点判定 + 思维计算)

    题目链接:BLO 这道题很明显就是要求割点. 题目要求n个数,若将该点割掉,还有多少对有序对,满足x,y不连通. 注意问的是有序对,所以x和y,与y和x是两种情况. 若该点不是割点,很明显把该点割掉以 ...

  9. 洛谷P3388 【模板】割点(割顶)

    /*表示割点模板很难理解.... 但是呢,可以将整个图用深搜来一步步递归.. dfn[x]<=low[tmp] && x!=mr的点就++: 完毕.... PS:小心第一个节点. ...

最新文章

  1. 向下钻取按钮位置设置
  2. python 签名计算 请求参数签名
  3. 2.14 向量化 Logistic 回归的梯度输出-深度学习-Stanford吴恩达教授
  4. 同一事务多次加for_Synchronized锁在Spring事务管理下,为啥还线程不安全?
  5. JavaScript变量和对象参数传值问题
  6. 一个Java快速排序实现的调试
  7. mvc4 html.pager,MVC分页之MvcPager使用详解
  8. Sharepoint 2010新体验之一-----基于Claims的全新验证机制
  9. php 时间错误,PHP xdebug调试trace记录时间错误
  10. 鸿蒙系统发布IT直播,华为开源平台上线:鸿蒙系统、方舟编译器在列
  11. java用户界面项目_结对项目(带图型用户界面)Java实现【柴政-陈起廷】
  12. c语言作业题整理,C语言考试模拟练习题
  13. idea中java没有run_idea 右键项目没有run 运行选项
  14. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 518期】
  15. 计算机标准红色,标准红色cmyk值
  16. WinEdit编辑器中中文乱码
  17. 类名+单书名号——泛型,什么是泛型?如何使用泛型
  18. 阿里云ECS服务器按量付费实例怎么释放?
  19. C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
  20. SmartZoneOCR识别控件免费下载地址

热门文章

  1. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...
  2. python笔记基础-python基础学习笔记(一)
  3. python画图三维-对python mayavi三维绘图的实现详解
  4. python学习方向-Python学习者的发展方向
  5. python爬虫流程-Python爬虫入门
  6. python处理excel-使用python将数据写入excel
  7. python不想学了-嫌Python太慢但又不想学C/C++?来了解下JIT技术
  8. 学python是看书还是看视频-零基础自学Python是看书还是看视频?
  9. python网课一般多少钱-Python培训网课一般学费多少?毕业生能承担吗?
  10. python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类