bzoj2730(矿场搭建)
矿场搭建,不知道为什么,莫名其妙T了在212上,额,zyh数据真的坑。
bzoj200轻松跑过啊。
就是点双联通分量缩点,然后标记割点,一个块如果有>=2个割点,则不需要挖矿洞,
如果只有一割点,就乘以改块的大小-1
如果无割点,则乘以C(size,2);
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std; typedef long long ll;
const int NN=; int n,m;
int tim,top,root,scc;
int cnt,head[NN],rea[NN*],next[NN*];
int dfn[NN],low[NN],q[NN],instack[NN],gedian[NN],num[NN];
vector<int>a[NN]; void init()
{
n=tim=top=scc=;
memset(head,-,sizeof(head));
memset(dfn,,sizeof(dfn));
memset(gedian,,sizeof(gedian));
memset(num,,sizeof(num));
}
void add(int u,int v)
{
cnt++;
next[cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
}
void Tarjan(int u,int fa)
{
int num=;
dfn[u]=low[u]=++tim;
q[++top]=u,instack[u]=;
for (int i=head[u];i!=-;i=next[i])
{
int v=rea[i];
if (v==fa) continue;
if (dfn[v]==)
{
Tarjan(v,u);
low[u]=min(low[u],low[v]);
num++;
if (u==root&&num>) gedian[u]=;
else if (u!=root&&low[v]>=dfn[u]) gedian[u]=;
if (low[v]>=dfn[u])
{
scc++;
a[scc].clear();
int x=-;
while (x!=u)
{
x=q[top--];
instack[x]=;
a[scc].push_back(x);
}
q[++top]=u,instack[u]=;
}
}
else low[u]=min(low[u],dfn[v]);
}
}
long long c(int n,int m)
{
long long res=n*(n-)/;
return res;
}
int main()
{
int fzy=;
while(scanf("%d",&m)&&m)
{
fzy++;
init();
int x,y;
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y),add(y,x);
n=max(x,n),n=max(y,n);
}
for (int i=;i<=n;i++)
if (dfn[i]==)
{
root=i;
Tarjan(i,-);
}
for (int i=;i<=scc;i++)
for (int j=;j<a[i].size();j++)
if (gedian[a[i][j]]) num[i]++;
long long ans1=,ans2=;
for (int i=;i<=scc;i++)
{
if (num[i]==)
{
ans1+=;
ans2*=c(a[i].size(),);
}
else if (num[i]==)
{
ans1+=;
ans2*=a[i].size()-;
}
}
printf("Case %d: %lld %lld\n",fzy,ans1,ans2);
}
return ;
}
bzoj2730(矿场搭建)的更多相关文章
- bzoj2730矿场搭建(Tarjan割点)
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1771 Solved: 835[Submit][Statu ...
- [BZOJ2730]矿场搭建
Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...
- bzoj2730矿场搭建——点双连通分量
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2730 首先一遍tarjan找出割点,将图缩点,这些大点中如果有只包含一个割点的,那么如果这个 ...
- BZOJ2730 矿场搭建 解题报告 点双联通分量
题意概述: 一张有向图,在其中设置一些关键点(即题目中的逃生出口),使得删除任意一个点之后其余点都可以到达至少一个关键点. 问至少需要设置多少中关键点,有多少种设置方法. 解析: 首先,这道题要求删掉 ...
- 【BZOJ2730】[HNOI2012]矿场搭建 Tarjan
[BZOJ2730][HNOI2012]矿场搭建 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处. ...
- 【BZOJ-2730】矿场搭建 Tarjan 双连通分量
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1602 Solved: 751[Submit][Statu ...
- 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]矿场搭建( tarjan )
先tarjan求出割点.. 割点把图分成了几个双连通分量..只需dfs找出即可. 然后一个bcc有>2个割点, 那么这个bcc就不用建了, 因为一定可以走到其他救援出口. 只有一个割点的bcc就 ...
随机推荐
- webstom,zencoding,windows快捷键
1.webstorm快捷键: IntelliJ-Idea 的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 C ...
- element ui datePicker 设置当前日期之前的日期不可选
pickerOptions0: { disabledDate(time) { return time.getTime() < Date.now() - 8.64e7 } },
- js文件引用方式及其同步执行与异步执行
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp74 任何以appendChild(scriptNode) 的方式引入 ...
- 【Beta阶段】测试与发布
[Beta阶段]测试报告 一.Bug记录 1. 已经修复的BUG:文件查重的小组的空指针处理了 . 2.未能修复的bug: (1).在进行查重的时候必要要有10个文件,不然会报错: (2 ...
- Swing-JList选择事件监听器ListSelectionListener-入门
当JList中的元素被选中时,选择事件将被触发.对于JTable也是一样,你可以把它看做是多个并列的JList.那么,如果程序需要对该事件做出响应,需要以下步骤: (1)创建一个实现了 ListSel ...
- 第1周-java作业总结与建议
1. 本周作业简评与建议 存在的问题: 这周的作业普遍存在一个格式混乱的问题.请认真学习Markdown,我们后面的作业都要使用Markdown.Markdown学习请参考http://group.c ...
- 201521123022 《Java程序设计》 第四周学习总结
1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2. 使用常规方法总结其他上课内容. ①instenceof运算符:可通过它判断父类引用对象实例的实际类型,且在父类转化成子类时 ...
- 201521123102 《Java程序设计》第1周学习总结
#1. 本周学习总结(1)初步了解java程序的运行环境,通过命令行语句编译简单的java程序(2)使用notepad编写,cmd下进入文件夹编译程序(3)学习使用各种快捷键补全代码(4)能够区别jd ...
- 201521123002《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- 201521123022 《Java程序设计》 第十一周学习总结
1.本章学习总结 2.书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问 Q1.1 除了使用synchronized修饰方法实现互斥同步访问,还 ...