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的更多相关文章

  1. BZOJ 1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1030  Solved: 440[Submit][Status] ...

  2. BZOJ 1123: [POI2008]BLO( tarjan )

    tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ...

  3. 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO

    [UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...

  4. bzoj 1123 [POI2008]BLO Tarjan求割点

    [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1540  Solved: 711[Submit][Status][Discu ...

  5. BZOJ 1123 [POI2008]BLO(Tarjan算法)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1123 [题目大意] Byteotia城市有n个towns,m条双向roads. 每条r ...

  6. bzoj 1123 [POI2008]BLO——点双连通分量

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 点双连通分量缩点,然后各种各样. 结果不会写了.比如新连边.记录一个点是割点缩成的点还 ...

  7. BZOJ 1123: [POI2008]BLO 求割点_乘法原理_计数

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  8. BZOJ 1123:城市道路

    Sol 就是求割点,把贡献算一下就好...直接tarjan # include <bits/stdc++.h> # define RG register # define IL inlin ...

  9. bzoj 1123 tarjan求割点

    #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...

随机推荐

  1. 【mysql5.6】下载安装

    每次学新技术最烦的就是安软件了..... 下载的mysql5.6 http://dev.mysql.com/downloads/windows/ 一路默认安装.安装后 1.以管理员身份打开C:\WIN ...

  2. iOS文件操作

      ];                   NSString *plistPath = [filePath stringByAppendingPathComponent:@"collect ...

  3. PATH环境变量和CLASSPATH环境变量详解

    大凡装过JDK的人都知道要安装完成后要设置环境变量,可是为什么要设置环境变量呢?环境变量有什么作用? 1)PATH详解: 计算机安装JDK之后,输入“javac”“java”之类的命令是不能马上被计算 ...

  4. java重构、重载、重写

    重构:就是代码优化,或则你可以理解为代码的修改!            例:开始你的类名是A现在要改为B也称为重构的一种 重载:发生在同一类中,方法名相同,参数列表不同 重写:发生在父子类中,子类中有 ...

  5. 华为上机:求2的N次幂的值

    求2的N次幂的值 描述: 求2的N次幂的值(N最大不超过31,用位运算计算,结果以十六进制进行显示). 运行时间限制: 无限制 内存限制: 无限制 输入: 数字N 输出: 2的N次方(16进制,需要按 ...

  6. iOS开发--CoreGraphics简单绘图

    一.导入coreGraphics.framework 二.绘制图形 1.绘制矩形 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 绘制矩形 - (v ...

  7. 存储入门 – RAID技术(大图解释)

    对于RAID,一直都知道个概念,但是对于细节没有去仔细的研究过.正好昨天Training的时候, 老师讲解了RAID的内容,所以顺便就整理一下.很多内容都是参考了ISMv2这本书. RAID中用到的技 ...

  8. Java:正则表达式的详解

    正则表达式:符合一定规则的表达式. 作用:用于专门操作字符串. 特点:用一些特定的符号来表示一些代码的操作.这样就简化书写.所以学习正则表达式就是学习一些特殊符号的使用. 好处:可以简化对字符串的操作 ...

  9. dwz ie10一直提示数据加载中

    dwz js资源jquery.validate.js 搜索 this.attr('novalidate', 'novalidate'); 在33行左右 用if (typeof (Worker) !== ...

  10. 15个必须知道的chrome开发者技巧

    在Web开发者中,Google Chrome是使用最广泛的浏览器.六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具.你可能已经熟悉了它的部分功能,如使用console和 ...