题目链接

题意:一张无向图,把第$i$个点关联的所有边去掉,求无向图中有多少个点对不连通。

题解:

如果割的不是割点,那么总答案是$2\times (n-1)$.

如果是割点,要分别考虑每个子树的贡献.

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int N = 1e5 + , M = 5e5 + ;
int head[N], ver[M * ], Next[M * ];
int dfn[N], low[N], Size[N];
ll ans[N];
bool cut[N];
int n, m, tot, num; ///时间戳号 void add(int u, int v)
{
ver[++tot] = v, Next[tot] = head[u], head[u] = tot;
}
void tarjan(int u)
{
dfn[u] = low[u] = ++num; Size[u] = ;
int flag = , sum = ;
for(int i = head[u]; i; i = Next[i])
{
int v = ver[i];
if(!dfn[v])
{
tarjan(v);
Size[u] += Size[v];
low[u] = min(low[u], low[v]);
if(low[v] >= dfn[u])
{
flag++;
ans[u] += (ll)Size[v] * (n - Size[v]);
sum += Size[v];
if(u != || flag > ) cut[u] = true;
}
}
else low[u] = min(low[u], dfn[v]);
}
if(cut[u]) ans[u] += (ll)(n - sum - ) * (sum + ) + (n - );
else ans[u] = * (n - );
}
int main()
{
scanf("%d %d", &n, &m); tot = ;
for(int i = ; i <= m; i++)
{
int u, v; scanf("%d %d", &u, &v);
if(u == v) continue;
add(u, v), add(v, u);
}
tarjan();
for(int i = ; i <= n; i++) printf("%lld\n", ans[i]);
return ;
}

Code

BZOJ 1123 tarjan的更多相关文章

  1. bzoj 1123 tarjan求割点

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

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

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

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

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

  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

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

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

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

  7. BZOJ 1123 BLO

    tarjan求割点计算答案.注意不是每一棵子树都算答案.开个变量记一下. #include<iostream> #include<cstdio> #include<cst ...

  8. BZOJ 1123:城市道路

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

  9. BZOJ 1123 && Luogu P3469 [POI2008]BLO-Blockade 割点+乘法原理

    想了半天式子...最后在邓大师的帮助下想出此题....QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= #include<cstdio> #incl ...

随机推荐

  1. android studio 定时器操作 实现定时执行相关任务

    package ipget.wenzheng.studio.ipget; import android.os.Bundle; import android.os.Handler; import and ...

  2. Java URL 中文乱码解决办法

    一. 统一所有的编码格式 (1)JSP页面设置:<%@ page language="java" import="java.util.*" pageEnc ...

  3. (2)Ngixn 编译安装设置开机自启

    设置nginx开机自启 #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 ...

  4. EXPLAIN - 显示语句执行规划

    SYNOPSIS EXPLAIN [ ANALYZE ] [ VERBOSE ] statement DESCRIPTION 描述 这条命令显示PostgreSQL规划器为所提供的语句生成的执行规划. ...

  5. Ubuntu的防火墙配置-ufw-iptables

    自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸如防火墙.NAT等功能.一般来说, 我们会使用名气 ...

  6. 暑假集训 || 区间DP

    区间DP 经典石子合并问题V1    复杂度 On3 int a[SZ], sum[SZ], f[SZ][SZ]; int main() { int n; scanf("%d", ...

  7. java中等待所有线程都执行结束

    转自:http://blog.csdn.net/liweisnake/article/details/12966761 今天看到一篇文章,是关于java中如何等待所有线程都执行结束,文章总结得很好,原 ...

  8. zabbix user-defined item

    1.user-defind item at:/etc/zabbix/zabbix_agent.conf format: UserParameter=<key>,<command> ...

  9. html5新增的定时器requestAnimationFrame

    在requestAnimationFrame出现之前,我们一般都用setTimeout和setInterval,那么html5为什么新增一个requestAnimationFrame,他的出现是为了解 ...

  10. 小程序之如何设置图片以及image组件的属性

    1. 设置图片,小程序支持两种引用图片方法,一种是本地引用,一种是网络资源引用. 但是引用本地图片的的时候不能用wxml样式去引用本地的图片,不会报错,也没效果.就是在wxss页面中不能引用本地的图片 ...