bzoj 2730: [HNOI2012]矿场搭建
#include<cstdio>
#include<cstring>
#include<iostream>
#define M 508
using namespace std;
int T=,m,n,head[M],K,next[*M],u[*M],cnt,f[M],c[M],fa[M],dfn[M],low[M],time1,ans,bi[M],sum[M];
long long ans1=;
void jia(int a1,int a2)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
}
void tarjin(int a1,int deep)
{
time1++;
dfn[a1]=low[a1]=time1;
c[a1]=-;
int tot=;
for(int i=head[a1];i;i=next[i])
if(u[i]!=fa[a1])
{
fa[u[i]]=a1;
if(!c[u[i]])
{
tarjin(u[i],deep+);
low[a1]=min(low[a1],low[u[i]]);
tot++;
if(deep==&&tot>)
f[a1]=;
if(deep>&&low[u[i]]>=dfn[a1])
f[a1]=;
}
else if(c[u[i]]==-&&u[i]!=fa[a1])
low[a1]=min(low[a1],dfn[u[i]]);
}
c[a1]=;
}
void dfs(int a1)
{
c[a1]=;
if(!bi[a1])
bi[a1]=time1;
else
bi[a1]=-;
for(int i=head[a1];i;i=next[i])
if(!c[u[i]]&&!f[u[i]])
dfs(u[i]);
return;
}
int main()
{
for(;scanf("%d",&m),m;T++){
ans=cnt=n=;
ans1=;
memset(head,,sizeof(head));
memset(bi,,sizeof(bi));
memset(f,,sizeof(f));
memset(sum,,sizeof(sum));
for(int i=;i<=m;i++)
{
int a1,a2;
scanf("%d%d",&a1,&a2);
n=max(n,a1);
n=max(n,a2);
jia(a1,a2);
jia(a2,a1);
}
time1=;
for(int i=;i<=n;i++)
{
f[i]=;
c[i]=;
fa[i]=;
}
tarjin(,);
time1=;
for(int i=;i<=n;i++)
if(f[i])
{
memset(c,,sizeof(c));
for(int j=head[i];j;j=next[j])
if(!c[u[j]]&&!f[u[j]])
{
time1++;
dfs(u[j]);
}
}
for(int i=;i<=n;i++)
if(bi[i]!=-)
sum[bi[i]]++;
for(int i=;i<=time1;i++)
if(sum[i])
{
ans++;
ans1*=sum[i];
}
printf("Case %d: ",T);
if(ans)
printf("%d %lld\n",ans,ans1);
else
printf("2 %d\n",n*(n-)/);}
return ;
}
先用tarjin找割点 割点条件u1是树根,且有大于1棵子树,u1不是树根,low[u[i]]>dfn[u1],把和一个割点相连的联通块建出口。
bzoj 2730: [HNOI2012]矿场搭建的更多相关文章
- BZOJ 2730: [HNOI2012]矿场搭建( tarjan )
先tarjan求出割点.. 割点把图分成了几个双连通分量..只需dfs找出即可. 然后一个bcc有>2个割点, 那么这个bcc就不用建了, 因为一定可以走到其他救援出口. 只有一个割点的bcc就 ...
- 【刷题】BZOJ 2730 [HNOI2012]矿场搭建
Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...
- bzoj 2730: [HNOI2012]矿场搭建——tarjan求点双
Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...
- bzoj 2730: [HNOI2012]矿场搭建【tarjan】
先tarjan找割点和点双连通分量,然后对一个点双,如果没有割点,那么需要建立两个出口(割掉一个另一个备用):如果只有一个割点,出口可以设立在任意一个非割点的地方:如果有两个及以上个割点,就不用建出口 ...
- 【BZOJ】2730: [HNOI2012]矿场搭建【Tarjan找割点】【分联通块割点个数】
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3230 Solved: 1540[Submit][Stat ...
- bzoj2730 [HNOI2012]矿场搭建 (UVAlive5135 Mining Your Own Business)
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1147 Solved: 528[Submit][Statu ...
- [BZOJ2730][HNOI2012]矿场搭建 点双 割点
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2852 Solved: 1344[Submit][Stat ...
- BZOJ 2730:[HNOI2012]矿场搭建(割点+连通块)
[HNOI2012]矿场搭建 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖 ...
- 洛谷 P3225 [HNOI2012]矿场搭建 解题报告
P3225 [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤 ...
随机推荐
- shiro连接数据库
建一个jdbcRealm.ini [main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.mchange.v2.c3 ...
- PyQt 学习笔记1——自定义窗口框架
自定义一个属于自己的窗口,初始化时自动设置好在屏幕中央显示,重写退出事件的触发器 closeEvent(),并增加了设置图标,简化设置标题的函数名,其它类可以继承它: # -*- coding: ut ...
- ios8中,相册创建后手动删除,不能再进行创建显示
// Add a new ALAssetsGroup to the library. // The name of the ALAssetsGroup is name and the type is ...
- iOS——为Xcode编译POCO C++静态库
一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...
- [js]事件综合 整理
原文链接:http://www.cnblogs.com/xxcanghai/p/5205998.html 事件流:页面接收事件的顺序,IE提出了事件冒泡流,Netscape提出了事件捕获流. 事件冒泡 ...
- excel 里面拼接 MySQL insert 语句
="('"&A2&"',"&" '"&B2&"','"&C2&& ...
- 项目框架开发流程(oa项目为例)
1. 导包 2. 配置web.xml 3. 设计通用dao ,base,service, action, domain ,utils等 4.配置struts.xml 和 beans.xml 5. 配 ...
- PV UV IP含义及区别
--------首先来看看ip.uv和pv的定义---------- PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次. UV(独立访客):即Unique Vis ...
- Unity4.3 遮挡剔除:基本知识
http://blogs.unity3d.com/2013/12/02/occlusion-culling-in-unity-4-3-the-basics/ 这篇博文由Umbra Software的J ...
- [Spring] spring-session + JedisPool 实现 session 共享
1.至少导入四个jar包: jedis spring-session spring-data-redis commons-pool2 2.bean配置 <?xml version="1 ...