bzoj 1123 tarjan求割点
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define piii pair<int, pair<int,int> > using namespace std; const int N = 1e5 + ;
const int M = + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; int n, m, idx, dfn[N], low[N], cnt[N];
LL ans[N];
vector<int> edge[N]; void tarjan(int u) {
int sum = ;
cnt[u] = ;
dfn[u] = low[u] = ++idx;
for(int i = ; i < edge[u].size(); i++) {
int v = edge[u][i];
if(dfn[v]) {
low[u] = min(low[u], dfn[v]);
} else {
tarjan(v);
cnt[u] += cnt[v];
low[u] = min(low[u], low[v]);
if(dfn[u] <= low[v]) {
ans[u] += 1ll * sum * cnt[v];
sum += cnt[v];
}
}
}
ans[u] += 1ll * sum * (n - sum - );
} int main() {
scanf("%d%d", &n, &m);
for(int i = ; i <= m; i++) {
int u, v; scanf("%d%d", &u, &v);
edge[u].push_back(v);
edge[v].push_back(u);
} for(int i = ; i <= n; i++) {
if(!dfn[i]) {
tarjan(i);
}
} for(int i = ; i <= n; i++) {
ans[i] = ans[i] + n - << ;
printf("%lld\n", ans[i]);
}
return ;
}
/*
*/
bzoj 1123 tarjan求割点的更多相关文章
- UESTC 900 方老师炸弹 --Tarjan求割点及删点后连通分量数
		
Tarjan算法. 1.若u为根,且度大于1,则为割点 2.若u不为根,如果low[v]>=dfn[u],则u为割点(出现重边时可能导致等号,要判重边) 3.若low[v]>dfn[u], ...
 - POJ 1144 Network(Tarjan求割点)
		
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12707 Accepted: 5835 Descript ...
 - poj 1523 SPF(tarjan求割点)
		
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
 - poj_1144Network(tarjan求割点)
		
poj_1144Network(tarjan求割点) 标签: tarjan 割点割边模板 题目链接 Network Time Limit: 1000MS Memory Limit: 10000K To ...
 - 洛谷P3388 【模板】割点(割顶)(tarjan求割点)
		
题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式: 第一行输出割点个数 第二行按照 ...
 - [POJ1144][BZOJ2730]tarjan求割点
		
求割点 一种显然的n^2做法: 枚举每个点,去掉该点连出的边,然后判断整个图是否联通 用tarjan求割点: 分情况讨论 如果是root的话,其为割点当且仅当下方有两棵及以上的子树 其他情况 设当前节 ...
 - poj1144 tarjan求割点
		
poj1144 tarjan求割点 额,算法没什么好说的,只是这道题的读入非常恶心. 注意,当前点x是否是割点,与low[x]无关,只和low[son]和dfn[x]有关. 还有,默代码的时候记住分目 ...
 - tarjan求割点割边的思考
		
这个文章的思路是按照这里来的.这里讨论的都是无向图.应该有向图也差不多. 1.如何求割点 首先来看求割点.割点必须满足去掉其以后,图被分割.tarjan算法考虑了两个: 根节点如果有两颗及以上子树,它 ...
 - Tarjan求割点和桥
		
by szTom 前置知识 邻接表存储及遍历图 tarjan求强连通分量 割点 割点的定义 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多, ...
 
随机推荐
- php 性能优化之opcache - 让你的php性能提升 50%
			
性能提升原理:减少文件解析的时间. 我们都知道,程序要运行,得有一个编译或者解析的过程,编译或解析之后的代码才是机器可以运行的. 而 php 是一种解析性语言,在使用php来处理http请求的时候,每 ...
 - python学习(十三)进程和线程
			
python多进程 from multiprocessing import Process import os def processFunc(name): print("child pro ...
 - 对于redis底层框架的理解(五)
			
之前总结了redis的通讯流程,基本框架,epoll的封装等等,这次介绍下 redis对于select模型的封装 //select 模型 typedef struct aeApiState { //读 ...
 - Linux安全之SYN攻击原理及处理
			
TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议,但TCP协议中也存在一些缺陷. SYN攻击就是利用TCP协议的缺陷,来导致系统服务停止正常的响应. SYN攻击原理 ...
 - centos pure-ftpd配置及错误解决
			
使用yum安装pure-ftpd Pure-FTPd是Linux上的一个开源的FTP服务程序,在易用性.配置性上比vsftp较方便,下面我们使用centos6演示安装和配置pure-ftpd. 安装e ...
 - Vue2.0中的路由配置
			
Vue2.0较Vue1.0,路由有了较大改变.看一下Vue2.0中的路由如何配置: 步骤一: 在main.js文件中引入相关模块以及组件及实例化vue对象配置选项路由及渲染App组件 默认设置如下: ...
 - Eclipse中 如何实现 多行同时编辑
			
在编辑的时候按下 SHIFT + ALT +A 之后 鼠标变为 + 号 选择要同时编辑几行 即可编辑(现在eclipse好像只能是编辑一块地方 不能像vs那样 任何地方可以同时编辑 这点很 ...
 - JSON 为王,为什么 XML 会慢慢淡出人们的视野?
			
目前全球信息基础设施的特点是,拥有大量的数据交换格式.这一点也不奇怪.互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实.但我仍然相信,在这一领域还有一股较强的历史趋势,推动 JSON 数据 ...
 - 通过删除hbase表中的region来达到删除表中数据
			
公司最近在搞一个hbase删除数据,由于在建表的时候是通过region来对每日的数据进行存储的,所以要求在删除的时候直接通过删除region的来删除数据(最好的方案是只删除region中的数据,不把r ...
 - 信息收集之zoomeye
			
一.浏览器上使用api接口 1.https://api.zoomeye.org/user/login post传参:{"username" : "username&quo ...