BZOJ 1123 BLO
tarjan求割点计算答案。注意不是每一棵子树都算答案。开个变量记一下。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxv 100050
#define maxe 1000050
using namespace std;
long long n,m,x,y,g[maxv],nume=,dfn[maxv],low[maxv],stack[maxv],top=,size[maxv],times=,base=,ans[maxv];
bool vis[maxv];
struct edge
{
long long v,nxt;
}e[maxe];
void addedge(long long u,long long v)
{
e[++nume].v=v;
e[nume].nxt=g[u];
g[u]=nume;
}
void dfs(long long x)
{
dfn[x]=low[x]=++times;size[x]=;long long t=;vis[x]=true;
for (long long i=g[x];i;i=e[i].nxt)
{
long long v=e[i].v;
if (!vis[v])
{
dfs(v);
size[x]+=size[v];low[x]=min(low[x],low[v]);
if (((dfn[x]<=low[v]) && (x!=)) || ((x==) && (base>)))
{
stack[++top]=x;
ans[x]+=t*size[v];
t+=size[v];
}
}
else low[x]=min(low[x],dfn[v]);
}
ans[x]+=(n-t-)*t;
ans[x]*=;
}
int main()
{
scanf("%lld%lld",&n,&m);
for (long long i=;i<=m;i++)
{
scanf("%lld%lld",&x,&y);
addedge(x,y);addedge(y,x);
if ((x==) || (y==)) base++;
}
dfs();
sort(stack+,stack+top+);
base=unique(stack+,stack+top+)-stack-;
long long p=;
for (long long i=;i<=n;i++)
{
if (stack[p]==i)
{
printf("%lld\n",*(n-)+ans[i]);
p++;
}
else printf("%lld\n",(n-)*);
}
return ;
}
BZOJ 1123 BLO的更多相关文章
- BZOJ 1123: [POI2008]BLO
1123: [POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1030 Solved: 440[Submit][Status] ...
- BZOJ 1123: [POI2008]BLO( tarjan )
tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ...
- 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO
[UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...
- bzoj 1123 [POI2008]BLO Tarjan求割点
[POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1540 Solved: 711[Submit][Status][Discu ...
- BZOJ 1123 [POI2008]BLO(Tarjan算法)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1123 [题目大意] Byteotia城市有n个towns,m条双向roads. 每条r ...
- bzoj 1123 [POI2008]BLO——点双连通分量
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 点双连通分量缩点,然后各种各样. 结果不会写了.比如新连边.记录一个点是割点缩成的点还 ...
- BZOJ 1123: [POI2008]BLO 求割点_乘法原理_计数
Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...
- BZOJ 1123:城市道路
Sol 就是求割点,把贡献算一下就好...直接tarjan # include <bits/stdc++.h> # define RG register # define IL inlin ...
- bzoj 1123 tarjan求割点
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...
随机推荐
- 【四】php字符串操作
1.trim函数,我们队trim函数并不陌生,用于去除字符串两头的空白符.php的trim方法也可以做到这一点,但是还可以使用第二个参数,用于规定你在两头去掉什么.php中还有 ltrim 和 rtr ...
- BroadcastReceiver应用1
有两种注册方式:1. 在AndroidManifest中注册.2. 在代码中直接注册,这种注册需要注意的一点是:当注册此Receiver的Activity退出的时候,一定要调用unregisterRe ...
- light oj 1068 - Investigation 数位DP
思路:典型的数位DP!!! dp[i][j][k]:第i位,对mod取余为j,数字和对mod取余为k. 注意:由于32位数字和小于95,所以当k>=95时,结果肯定为0. 这样数组就可以开小点, ...
- jenkins配置及使用中出现的问题
安装中遇到的问题: 1.linux中最好用普通用户安装tomcat和jenkins,用普通用户启动tomcat,否则jenkins工作空间不会在普通用户下,而线上自动发布部署时,是不允许用root用户 ...
- hdu 1848 Fibonacci again and again (初写SG函数,详解)
思路: SG函数的应用,可取的值为不连续的固定值,可用GetSG求出SG,然后三堆数异或. SG函数相关注释见代码: 相关详细说明请结合前一篇博客: #include<stdio.h> # ...
- 重温《js权威指南》 第4、5、6章
第四章 表达式和运算符 4.2 对象和数组的初始化表达式 数组: [] [3,7] [1+2,3+4] [[1,2,3,],[4,5,6],[7,8, ...
- iOS开发--CoreGraphics简单绘图
一.导入coreGraphics.framework 二.绘制图形 1.绘制矩形 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 绘制矩形 - (v ...
- 对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)
32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES.CS.SS.DS.FS和GS)1 ...
- VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html 鸡啄米在上一讲中 ...
- iOS Core Telephony Framework
Core Telephony Framework(核心通讯框架) 概述: 这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使 ...