当前位置: 首页 > 编程日记 > 正文

bzoj 2730: [HNOI2012]矿场搭建——tarjan求点双

Description

煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数。

Input

输入文件有若干组数据,每组数据的第一行是一个正整数 N(N≤500),表示工地的隧道数,接下来的 N 行每行是用空格隔开的两个整数 S 和 T,表示挖       S 与挖煤点 T 由隧道直接连接。输入数据以 0 结尾。

Output

输入文件中有多少组数据,输出文件 output.txt 中就有多少行。每行对应一组输入数据的 结果。其中第 i 行以 Case i: 开始(注意大小写,Case 与 i 之间有空格,i 与:之间无空格,: 之后有空格),其后是用空格隔开的两个正整数,第一个正整数表示对于第 i 组输入数据至少需 要设置几个救援出口,第二个正整数表示对于第 i 组输入数据不同最少救援出口的设置方案总 数。输入数据保证答案小于 2^64。输出格式参照以下输入输出样例。

Sample Input

9
1 3
4 1
3 5
1 2
2 6
1 5
6 3
1 6
3 2
6
1 2
1 3
2 4
2 5
3 6
3 7
0

Sample Output

Case 1: 2 4
Case 2: 4 1

HINT

 

Case 1 的四组解分别是(2,4),(3,4),(4,5),(4,6);

Case 2 的一组解为(4,5,6,7)。
———————————————————————————————
这道题我们发现对于每一个点双联通分量 如果他没有割点 那么他就是一个单独的块 
对于这样的块 我们应该给他设两个出口 防止一个崩了 而对于只有一个联通块的 我们应该设一个不再割点的出口
这样如果出口崩掉了还可以去别的块 而对于有大于一个割点 不用设出口 他可以随便去别的块
然后乘法原理就可以辣 (吐槽:点双写起来贼丑
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using std::max;
using std::min;
const int M=1e3+7;
int read(){int ans=0,f=1,c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}return ans*f;
}
int n,m;
int first[M],cnt,buck[M];
struct node{int from,to,next;}e[2*M];
void ins(int a,int b){e[++cnt]=(node){a,b,first[a]}; first[a]=cnt;}
void insert(int a,int b){ins(a,b); ins(b,a);}
int dfn[M],low[M],T,iscut[M];
int hc,sz[M],color[M],stk[M],top;
void clear(){n=0; cnt=1; T=0; hc=0; top=0;memset(iscut,0,sizeof(iscut));memset(first,0,sizeof(first));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(sz,0,sizeof(sz));memset(color,0,sizeof(color));memset(buck,0,sizeof(buck));
}
void tarjan(int x,int fa){low[x]=dfn[x]=++T;int child=0;for(int i=first[x];i;i=e[i].next){int now=e[i].to;if(!dfn[now]){stk[++top]=i;child++;tarjan(now,x);low[x]=min(low[x],low[now]);if(low[now]>=dfn[x]){iscut[x]=1;hc++;while(1){int k=stk[top--];if(color[e[k].from]!=hc){if(color[e[k].from]) buck[color[e[k].from]]++;sz[hc]++; color[e[k].from]=hc;}if(color[e[k].to]!=hc){if(color[e[k].to]) buck[color[e[k].to]]++;sz[hc]++; color[e[k].to]=hc;}if(e[k].from==x&&e[k].to==now) break;}}}else if(dfn[now]<dfn[x]&&now!=fa) stk[++top]=i,low[x]=min(low[x],dfn[now]);}if(fa==-1&&child==1) iscut[x]=0;
}
int main(){int x,y,h=0;while(scanf("%d",&m)==1&&m){++h; clear();for(int i=1;i<=m;i++){x=read(); y=read();insert(x,y); n=max(n,max(x,y));}for(int i=1;i<=n;i++)if(!dfn[i]) tarjan(i,-1);for(int i=1;i<=n;i++)if(iscut[i]) buck[color[i]]++;LL ans=1;int tot=0;for(int i=1;i<=hc;i++){if(buck[i]==1) ans*=max(sz[i]-1,1),tot++;if(!buck[i]) ans*=sz[i]*(sz[i]-1)/2,tot+=2;}printf("Case %d: %d %lld\n",h,tot,ans);}return 0;
}
View Code

转载于:https://www.cnblogs.com/lyzuikeai/p/7656443.html

相关文章:

华为鸿蒙手机官网价格表,曝下半年华为将推出两款鸿蒙手机:国内独享,价格良心...

虽然发声表示自己将全力支持安卓系统&#xff0c;维护安卓生态&#xff0c;但又推出了鸿蒙操作系统&#xff0c;余承东还表示鸿蒙系统取代安卓系统只需要1-2天即可。从这番表态来看&#xff0c;华为应该后续是要安卓鸿蒙两手抓了。安卓系统照常使用&#xff0c;而鸿蒙系统也会进…

PocketPC 全屏的实现

在windows mobile 5.0中实现全屏的方法&#xff0c;和隐藏SIP的方法差不多&#xff0c;只要稍稍改一下就可以了&#xff1a;::CommandBar_Show(m_hWnd, FALSE);//隐藏菜单 ::SHFullScreen(m_hWnd,SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);//隐藏taskbar与sipSetForegroundWindo…

AI时代,谈数据分析时我们要谈些什么?

参加 2018 AI开发者大会&#xff0c;请点击大会官网 说起数据分析&#xff0c;你能想到的是什么&#xff1f; 根据维基百科的定义&#xff0c;数据分析是一类统计方法&#xff0c;其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系&#xff0c;并绘…

清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具

https://gitee.com/bitprince/memory 1. 概述 1.1 连接、语句和结果集 从JDBC的规范上看&#xff0c;其对数据访问层有相当简洁的抽象&#xff1a;1、连接(connection) 2、语句(statement)、3结果集(result set)。我们对数据库做的事情无非&#xff1a;连接数据库&#xff0c;执…

html 显示消息数量,html实现消息按钮上的数量角标的实例详解

这篇文章主要介绍了html在消息按钮上增加数量角标的实现代码,需要的朋友可以参考下html代码&#xff1a;消息4css代码&#xff1a;/*角标 */.ii{display: none;background: #f00;border-radius: 50%;width: 20px;height: 20px;top: 5px;right: 0px;position: absolute;text-ali…

为什么让A.I.“顶天立地”需要6个多月?

在A.I.的发展中&#xff0c;专注技术or专注应用&#xff1f;这从来不是一道选择题。“技术顶天&#xff0c;应用落地&#xff0c;希望全社会的开发者可以和我们一起开放创新、共建A.I.生态。”2018年3月22日&#xff0c;在科大讯飞主办的「AI大学未来课栈上海栈」&#xff0c;科…

[ASP.NET]状态管理[摘自C#入门经典]

[出处]&#xff1a;来自《C#入门经典》第三版中文版&#xff0c;P505-P506[涉及]&#xff1a;1、状态管理[附注]:看到这个表格总结得还是相当不错的&#xff0c;就摘抄下来了,兴许你看过&#xff0c;但没太在意,那就再看看吧.[正文]:HTTP协议是无状态的。从客户端到服务器的连接…

html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器

我试图在Django的管理页面中实现HTML5 colorpicker。这是我的模型&#xff1a;#model.py...class Category(models.Model):...color models.CharField(max_length7)这是表格&#xff1a;#form.pyfrom django.forms import ModelFormfrom django.forms.widgets import TextInpu…

微软曾经的二号人物永远地离开了

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 他是一位发明家、投资者、考古学家和慈善家&#xff0c;“他对微软做出的不可或缺的贡献”会让人们永远铭记。 据外媒 CNBC 今日早间报道&#xff0c;微软联合创始人之一保罗艾伦&#xff08;Paul Allen&#xff09;于当地时…

经理人必须抛弃的十个习惯思维

1、过分的完美主义可能很多经理人总希望自己可以做到完美&#xff0c;于是拟订了诸多工作计划&#xff0c;但往往到最后&#xff0c;连自己也不知道应该如何选择。一名信奉完美主义的美术设计师总是很晚才交上作品&#xff0c;但他没有意识到&#xff0c;准时与作品质量具有同等…

菜鸟学习之linux用户行为日志审计方案

今天学习了了sudo日志审计&#xff0c;专门对使用sudo命令系统的用户记录其执行的相关命令信息说明&#xff1a;所谓sudo命令日志审计,不记录普通用户操作,而是记录执行sudo命令的用户操作1、安装sudo命令,syslog服务[rootqzj ~]# rpm -qa |egrep "sudo|syslog" rsys…

html+服务器控件语法,HtmlForm 服务器控件声明性语法

HtmlForm 服务器控件声明性语法08/20/2007本文内容创建一个服务器端控件&#xff0c;该控件映射到 HTML 元素并允许您为网页中的元素创建一个容器。DefaultButton"string"DefaultFocus"string"EnableViewState"False|True"Id"string"…

Javascript内置对象新增接口列表

网上很少有提供不同版本接口对比的文章&#xff0c;所以自己总结一下。 Array MethodDescriptionModifyVersionconcat连接多个数组&#xff0c;返回数组副本&#xff0c;参数可以为值或数组否ES3join把数组元素组合为字符串否ES3pop删除并返回最后一个元素是ES3push向数组末尾添…

程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 一场突如其来的降温&#xff0c;再度把程序员的格子衬衫送上热搜&#xff0c;和“发际线 专业水平”等常见标签一样&#xff0c;这往往被视作一种“程序员式的幽默”&#xff0c;但自我调侃之余也不乏令人头秃的真实焦虑。…

mono和monodevelop源码编译安装

之所以用源码编译的方式安装mono和monodevelop&#xff0c;是因为通过yum安装的mono不是最新版本&#xff0c;而且monodevelop不能建 asp.net MVC3的工程。 而且通过源码安装&#xff0c;可以进一步了解mono的各个项目之间的关系。 我用的Fedora16系统 1. mono的源码编译安装 …

sql数据库打包部署安装

目的&#xff1a;在客户端服务器上”附加数据库文件”。一).创建部署项目1. 打开VS.NET2005。2&#xff0e;在“文件”菜单上指向“新建项目”。3. 在“新建项目”对话框中&#xff0c;选择“项目类型”窗格中的”其他项目类型”中的“安装和部署”&#xff0c;然后选择“模板”…

2021潍坊市高考成绩查询,潍坊2021高考成绩排名榜单,潍坊各高中高考成绩喜报

2018高考成绩排名榜单,各高中高考成绩喜报尚未公布&#xff0c;请广大考生和家长参考往年公布情况&#xff01;潍坊四中潍坊四中今年高考再次实现新的历史突破&#xff1a;本科过线1429人&#xff0c;自招(重本)上线379人。高分段情况&#xff1a;理660分以上3人&#xff0c;65…

掌握哪些机器学习工具更受企业青睐?

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 想成为一名优秀的开发工程师不是一件简单的事情&#xff0c;除了掌握工程师的通用技能以外&#xff0c;还需要掌握机器学习的各种算法&#xff0c;更需要掌握从开发到调试到优化等一系列能力&#xff0c;这些能力中的每一项…

从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

第1部分&#xff1a;http://www.cnblogs.com/cgzl/p/7637250.html 第2部分&#xff1a;http://www.cnblogs.com/cgzl/p/7640077.html 第3部分&#xff1a;http://www.cnblogs.com/cgzl/p/7652413.html 第4部分&#xff1a;http://www.cnblogs.com/cgzl/p/7661805.html Github源…

可以打游戏的计算机,还在用笔记本玩游戏?台式机才能给你极致享受

【PConline 游戏爆测】随着笔记本的性能越来越好&#xff0c;玩家对于游戏本的需求也越来越高了&#xff0c;再加上购买游戏笔记本并不需要额外购买显示器&#xff0c;就能享受到高刷新率高色域的屏幕&#xff0c;让玩家对于游戏台式机就更加不感兴趣了。但我想说的是&#xff…

如何把Windows安装的所有打印机列出来

[转]最近在论坛中不少网友问"如何把Windows安装的所有打印机列出来"&#xff0c;在下面的程序中我们将把系统中所安装的打印机用列表框列出来&#xff0c;同时为默认打印机设置缺省值。  在下面的程序中我们用到了两个主要的类&#xff0c;把所有的打印机列表出来用…

今晚直播 | 谷歌资深工程师手把手教你使用TensorFlow最新API构建学习模型

目前&#xff0c;深度学习的研究和应用大受追捧&#xff0c;各种开源的深度学习框架层出不穷。TensorFlow 作为目前最受欢迎的深度学习框架&#xff0c;已经在 GitHub 上获得了 112194 个 star&#xff0c;受欢迎程序可见一斑。但如何学习 TensorFlow&#xff0c;以及如何通过 …

澳洲计算机学,2020年澳洲计算机科学专业工作好找吗

就业前景&#xff1a;本专业毕业生就业前景十分良好。在完成学业后可以凭借其良好扎实的专业技能自主创业&#xff0c;或者进一步学习获得硕士或博士学位&#xff0c;也可进入计算机科学领域求职&#xff0c;如对先进计算机进行研发、编程、游戏设计、多媒体设计、网页设计、信…

AngularJS如何在filter中相互调用filter

调用方式如下&#xff1a; app.filter(filter2, function( $filter ) {return function( input) {return $filter(filter1)( input );}});本文转自黄聪博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/huangcong/p/6800107.html&#xff0c;如需转载请自行联…

腾讯AI Lab开源业内最大规模多标签图像数据集(附下载地址)

今日&#xff08;10 月 18 日&#xff09;&#xff0c;腾讯AI Lab宣布正式开源“Tencent ML-Images”项目。该项目由多标签图像数据集 ML-Images&#xff0c;以及业内目前同类深度学习模型中精度最高的深度残差网络 ResNet-101 构成。 该开源项目的主要内容包括&#xff1a; 1、…

two years in cnblogs.com

时间过得太快了&#xff0c;几乎还没什么感觉就在博客园扎寨两年了。回头瞄瞄这两年来的随笔觉得自己留下的都是毛皮&#xff0c;自己一直在调船头&#xff0c;几乎没有在哪一个专业中找到精髓&#xff0c;有点遗憾&#xff01;在博客园这两年最要感谢的人是dudu&#xff0c;他…

自动驾驶公司Momenta完成超2亿美元融资,估值超10亿美元

参加 2018 AI开发者大会&#xff0c;请点击 ↑↑↑10 月 17 日&#xff0c;自动驾驶公司 Momenta 对外公布完成新一轮融资&#xff0c;本轮融资主要来自行业领先的战略投资者和国资背景的投资者。本轮战略投资者包括腾讯等多家机构&#xff0c;国资背景投资者则包括招商局创投…

shell版俄罗斯方块

#!/bin/bash # Tetris Game # 10.21.2003 xhchen #颜色定义 cRed1 cGreen2 cYellow3 cBlue4 cFuchsia5 cCyan6 cWhite7 colorTable($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite) #位置和大小 iLeft3 iTop2 ((iTrayLeft iLeft 2)) ((iTrayTop iTop 1)) ((iTray…

利用计算机进行机械设计属于什么,计算机技术机械设计应用

【摘要】近几年计算机技术的飞速发展使得它在各个领域中的地位越来越显著&#xff0c;应用越来越广泛&#xff0c;在机械设计过程中也逐渐地引入了计算机技术。在计算机技术中有一种单独的辅助设计技术用来辅助各种设计工作&#xff0c;计算机辅助设计技术使得机械设计更加简单…

linux carry php Soap 扩展

前言今天又出现下问题了需要解决如下&#xff1a;报错信息是没有soap这个扩展&#xff01;解决问题如图所示&#xff1a;cd php-5.6.2/ext/soap//usr/local/php5/bin/phpize # 进入phpize开始编译安装 ./configure -with-php-config/usr/local/php5/bin/php-config -enable-so…