传送门

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

题解: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. Python3.x:PDFMiner3k在线、本地解析pdf

    Python3.x:PDFMiner3k在线.本地解析pdf 安装 pip install pdfminer3k 示例一:在线解析pdf ''' Demo:pdf2htmlex解析pdf Dateti ...

  2. python 利用PIL库进行更改图片大小的操作

    python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...

  3. nc之netcat端口测试与nmap工具

    nc介绍: nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具,其有Windows和Linux的版本,可通过TCP或UDP协议传输读写数据. ...

  4. Spring_使用 JdbcTemplate和JdbcDaoSupport

  5. [nowcoder]因数个数和

    链接:https://www.nowcoder.com/acm/contest/158/A 考虑每个数对答案的贡献,所以答案就是$\sum_{i=1}^{n}{\lfloor\frac{n}{i}\r ...

  6. Spring中Bean管理的常用注解

    在Spring中,主要用于管理bean的注解分为四大类:1.用于创建对象.2.用于给对象的属性注入值.3.用于改变作用的范围.4.用于定义生命周期.这几个在开发中经常接触到,也可以说每天都会遇见.其中 ...

  7. [POI2006]MET-Subway

    Description 给出一棵N个结点的树,选择L条路径,覆盖这些路径上的结点,使得被覆盖到的结点数最多. Input 第一行两个正整数N.L(2 <= N <= 1,000,000, ...

  8. ik分词器

    ik分词器下载地址:https://code.google.com/archive/p/ik-analyzer/downloads 需要FQ 配置文件: IKAnalyzer2012.jar(主 ja ...

  9. throws和throw的用法例子以及检测和非检查异常

    throws E1,E2,E3 只是告诉程序这个方法可能会抛出这些个异常,方法的调用者可能要处理这些异常.而这些异常E1,E2,E3可能是该函数体产生的. 而throw是明确之处这个地方要抛出这个异常 ...

  10. cssrem 比例适配理解

    cssrem只是帮你自动计算,省去了你在切图时,从设计稿拿到的px再根据比例转换成rem的中间过程. 这个40我无法猜测, 以前设计稿给的都是按640px(iphone5s的宽)来的,我们就按照这个比 ...