传送门

题目大意:建设几个出口,使得图上无论哪个点被破坏,都可以与出口联通。

题解:tarjian求割点

首先出口不能建在割点上,找出割点,图就被分成了几个联通块。

每个联通块,建出口。如果割点数为0,建两个出口,一个炸了,

另一个还可以走,那么方案数是c(size,2),如果割点为1个,那么

随便从联通块里建一个就好,割点炸了有新建的,新建的炸了还有

割点可以走,方案数是联通块大小。注意long long

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 5200
#define LL long long
using namespace std; int n,kis,sumedge,root,cnt,tim,head[maxn],low[maxn],dfn[maxn],iscut[maxn],vis[maxn];
LL ans=,tmp;
int cntcut,kuai; struct Edge{
int x,y,nxt;
Edge(int x=,int y=,int nxt=):
x(x),y(y),nxt(nxt){}
}edge[maxn<<]; void add(int x,int y){
edge[++sumedge]=Edge(x,y,head[x]);
head[x]=sumedge;
} void Tarjian(int x,int fa){
int cnt=;low[x]=dfn[x]=++tim;
for(int i=head[x];i;i=edge[i].nxt){
int v=edge[i].y;
if(v==fa)continue;
if(dfn[v]==){
cnt++;
Tarjian(v,x);
low[x]=min(low[x],low[v]);
if(x!=root&&low[v]>=dfn[x]&&iscut[x]==)iscut[x]=true;
if(x==root&&cnt>=&&iscut[x]==)iscut[x]=true;
}else low[x]=min(low[x],dfn[v]);
}
} void dfs(int x){
tmp++;vis[x]=kuai;
for(int i=head[x];i;i=edge[i].nxt){
int v=edge[i].y;
if(iscut[v]&&vis[v]!=kuai)cntcut++,vis[v]=kuai;
if(!vis[v])dfs(v);
}
} int main(){
while(){
scanf("%d",&n);
sumedge=;tim=;ans=;cnt=;
kuai=;memset(vis,,sizeof(vis));
memset(iscut,,sizeof(iscut));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(head,,sizeof(head));
if(!n)break;int xr=;
for(int i=;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
xr=max(max(x,y),xr);
}
for(int i=;i<=xr;i++)if(dfn[i]==)root=i,Tarjian(i,i);
for(int i=;i<=xr;i++){
tmp=;cntcut=;kuai++;
if(vis[i]==&&iscut[i]==){
dfs(i);if(cntcut==)cnt++,ans=1LL*ans*tmp;
if(cntcut==)cnt+=,ans=1LL*ans*tmp*(tmp-)/;
}
}
printf("Case %d: %d %lld\n",++kis,cnt,ans);
}
return ;
}

AC

洛谷 P3225 [HNOI2012]矿场搭建的更多相关文章

  1. 洛谷 P3225 [HNOI2012]矿场搭建 解题报告

    P3225 [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤 ...

  2. 洛谷——P3225 [HNOI2012]矿场搭建

    P3225 [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤 ...

  3. 洛谷P3225 HNOI2012 矿场搭建

    题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之 ...

  4. 洛谷—— P3225 [HNOI2012]矿场搭建

    https://www.luogu.org/problem/show?pid=3225 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有 ...

  5. BZOJ2730或洛谷3225 [HNOI2012]矿场搭建

    BZOJ原题链接 洛谷原题链接 显然在一个点双连通分量里,无论是哪一个挖煤点倒塌,其余挖煤点就可以互相到达,而对于一个点双连通分量来说,与外界的联系全看割点,所以我们先用\(tarjan\)求出点双连 ...

  6. P3225 [HNOI2012]矿场搭建 割点 tarjan 双联通分量

    https://www.luogu.org/problemnew/show/P3225 题意 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条 ...

  7. P3225 [HNOI2012]矿场搭建 题解

    这道题挺难的,可以加深对割点的理解,还有,排列组合好重要了,分连通块,然后乘法原理(加法原理计数什么的) 传送门   https://www.luogu.org/problem/P3225 省选oi题 ...

  8. P3225 [HNOI2012]矿场搭建

    传送门 对于一个点双联通分量,如果它连接了两个或更多割点 那么不论哪个点GG都有至少一条路通到其他的点双联通分量,所以我们不用考虑 如果它只连接一个割点,如果这个割点GG,那整个块也一起GG,所以要再 ...

  9. [Luogu] P3225 [HNOI2012]矿场搭建

    题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之 ...

随机推荐

  1. [BZOJ1257]余数之和

    Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...

  2. python部署LNMP业务服务环境

  3. spark UDAF

    感谢我的同事 李震给我讲解UDAF 网上找到的大部分都只有代码,但是缺少讲解,官网的的API有讲解,但是看不太明白.我还是自己记录一下吧,或许对其他人有帮助. 接下来以一个求几何平均数的例子来说明如何 ...

  4. Node.js基础知识普及

    Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制.非常适合与开发需要处理大量并发的输入/输出的应用程序.   一. Node.js的核心模块有很多,这里先写几个比较常用的( ...

  5. spring4x,暂时停更

    spring4x,暂时停更 鄙人愚笨,没有spring基础,直接上了spring4x,发现无法理解(另外spring4x实战课本演示不详,本人学识有限),现从spring3开始.

  6. python之linecache使用

    Python linecache模块缓存读取大文件指定行 linecache模块的作用是将文件内容读取到内存中,进行缓存,而不是每次都要从硬盘中读取,这样效率提高很多,又省去了对硬盘IO控制器的频繁操 ...

  7. 【mysql 】sql删除重复记录 You can't specify target table '表名' for update in FROM clause

    用下面的语句就报语法出错: delete from tab_record where recordid not in (select  min(c.recordid) as recordid from ...

  8. ASP.NET Core 简单引入教程

    0.简介 开源.跨平台 1.环境安装 参考官方教程   Core 官方文档 2.向世界问个好 sheel/cmd 下: dotnet --help // 查看帮助 dotnet new *     / ...

  9. 监控和审计IBM InfoSphere BigInsights和Cloudera Hadoop的访问权限

    http://www.ithov.com/server/124456.shtml 您也将学习一个仅适用于 IBM InfoSphere BigInsights 的快速启动监控实现. 大数据骚动主要集中 ...

  10. 在启动mysql的时候出现如下问题:“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”

    今天在启动Mysql 的时候出现如下的问题:“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)” 在查询 ...