luogu3469 [POI2008]BLO-Blockade
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, m, uu, vv, hea[100005], cnt, siz[100005], dfn[100005], loo[100005], idx;
ll ans[100005];
bool ins[100005];
struct Edge{
	int too, nxt;
}edge[1000005];
void add_edge(int fro, int too){
	edge[++cnt].nxt = hea[fro];
	edge[cnt].too = too;
	hea[fro] = cnt;
}
void dfs(int x, int f){
	dfn[x] = loo[x] = ++idx;
	siz[x] = 1;
	ins[x] = true;
	int fla=0, sum=0;
	bool isc=false;
	for(int i=hea[x]; i; i=edge[i].nxt){
		int t=edge[i].too;
		if(!dfn[t]){
			dfs(t, x);
			siz[x] += siz[t];
			loo[x] = min(loo[x], loo[t]);
			if(loo[t]>=dfn[x]){
				fla++;
				sum += siz[t];
				ans[x] += (ll)siz[t] * (n - siz[t]);
				if(x!=1 || fla>1)	isc = true;
			}
		}
		else if(ins[t])	loo[x] = min(loo[x], dfn[t]);
	}
	// if(x==1)	cout<<"1's isc: "<<isc<<endl;
	if(isc)	ans[x] += (ll)(n-sum-1)*(sum+1) + (n-1);
	else	ans[x] = 2 * (n - 1);
	ins[x] = false;
}
int main(){
	cin>>n>>m;
	for(int i=1; i<=m; i++){
		scanf("%d %d", &uu, &vv);
		add_edge(uu, vv);
		add_edge(vv, uu);
	}
	for(int i=1; i<=n; i++)
		if(!dfn[i])
			dfs(i, 0);
	for(int i=1; i<=n; i++)
		printf("%lld\n", ans[i]);
	return 0;
}
luogu3469 [POI2008]BLO-Blockade的更多相关文章
- BZOJ 1123: [POI2008]BLO
		1123: [POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1030 Solved: 440[Submit][Status] ... 
- BZOJ1123: [POI2008]BLO
		1123: [POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 614 Solved: 235[Submit][Status] ... 
- BZOJ 1123: [POI2008]BLO( tarjan )
		tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ... 
- bzoj 1123 [POI2008]BLO Tarjan求割点
		[POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1540 Solved: 711[Submit][Status][Discu ... 
- [POI2008]BLO(Tarjan)
		[POI2008]BLO Description Byteotia城市有\(n\)个 towns \(m\)条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所 ... 
- 【dfs+连通分量】Bzoj1123 POI2008 BLO
		Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ... 
- 割点判断+luogu 3469 POI2008 BLO
		1.根节点,有2棵及以上子树 2.非根节点,有子节点dfn[u]<=low[v] #include <bits/stdc++.h> #define N 1000050 using n ... 
- [POI2008] BLO
		link 试题分析 分两种情况考虑. 当此点不是割点是,答案是$2\times (n-1)$. 当是割点时,我们发现这个点把树分成了若干个联通块,只要两两相乘即可. #include<iostr ... 
- BZOJ 1123 [POI2008]BLO(Tarjan算法)
		[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1123 [题目大意] Byteotia城市有n个towns,m条双向roads. 每条r ... 
- BZOJ1123:[POI2008]BLO(双连通分量)
		Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ... 
随机推荐
- JAVA分包下项目部分代码存储
			一.注册时姓名去重和符合汉字格式: // 新用户申请加入 public void NewHuman() { System.out.println("========新会员申请加入页面==== ... 
- css中伪类/伪元素详解
			一.伪类和伪元素 伪类和伪元素都是用来修饰不在文档树中的部分,区别在于, 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的(如:hover/:active). ... 
- SQL查询-约束-多表
			一.SQL语句查询 1.聚合函数 COUNT()函数,统计表中记录的总数量 注:COUNT()返回的值为Long类型;可通过Long类的intValue()方法 ... 
- Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类
			一.Properties 类(java.util) 概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,propert ... 
- SpringMVC+Thymeleaf  简单使用
			一.简介 1.Thymeleaf 在有网络和无网络的环境下皆可运行,而且完全不需启动WEB应用,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.浏览器解释 h ... 
- Jquery 如何获取表单中的全部元素的值
			1.使用var formData = $(formId).serialize()获取:获取数据的格式为url参数形式的字符串.例如:id=100&name=张三 2.服务器端使用parse ... 
- Jenkins系列——使用SonarQube进行代码质量检查
			1.目标 之前已经写过一篇关于Jenkins和SonarQube的一篇博客<jenkins集成sonar>,本文在参考前文的基础上,做了详细的补充. 使用SonarQube进行代码质量检查 ... 
- python_104_面向对象总结
			参考(都要认真看看):http://www.cnblogs.com/alex3714/articles/5188179.html http://www.cnblogs.com/alex3714/art ... 
- Django ORM models操作
			title: Django ORM models操作 tags: Django --- Django ORM models操作 Django ORM基本操作 一.数据库的创建及增删改查 1 使用类创建 ... 
- Map集合应用 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
			package com.swift; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ... 
