HNOI 2012

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

请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数。

输入格式

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

输出格式

输入文件中有多少组数据,输出文件中就有多少行。每行对应一组输入数据的结果。

其中第 i 行以 Case i: 开始(注意大小写,Case 与 i 之间有空格,i 与 : 之间无空格,: 之后有空格),其后是用空格隔开的两个正整数,第一个正整数表示对于第 i 组输入数据至少需要设置几个救援出口,第二个正整数表示对于第 i 组输入数据不同最少救援出口的设置方案总数。

输出格式参照以下输入输出样例。

样例

样例输入

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

样例输出

Case 1: 2 4
Case 2: 4 1

样例解释

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

Case 2 的一组解为 (4,5,6,7)。

数据范围与提示

N<=500,输入数据保证答案小于2^64 。

____________________________________________________________

tarjan,求点双联通问题。

初步判断:

1、双联通里面只有有两个救援井就可以了,因为可以两两到达。即使是刚好哦一个救援井坏了也可以逃生。

2、如果矿井排成了一条线,要将救援井安排在两端,这样随便哪一个坏了可以从另一个逃生。中间不能安排救援井,如果它坏了,一端的矿井无法逃生。

所以,方法是:

把双联通分量缩点,图变成了一棵树,同时统计每个分量里面有几个割点。

如果有一个,他就是1中的端点,如果有两个或以上就是中间点。

有个特殊情况,整个图就是一个双联通图。

中间点不必管

单个点就看对应分量里面的点数,点数加2,方案数(n-1)。

双联通分量,n*(n-1)/2

注意:

1、点双联通分量标志点的判断。

2、这个题塌陷的是矿井,也就是点,靠点联通,所以是点双联通,开始没有想到!!!

____________________________________________________________

												

最新文章

  1. 设计模式(十一):从文Finder中认识&quot;组合模式&quot;(Composite Pattern)
  2. IOS学习之初识KVO
  3. 256. Paint House
  4. SDC(7) -- 关于使能信号的时序放松
  5. AMH4.2 Ftp账号路径修改设置
  6. github atom创建自己的语法高亮
  7. SVG在网页中的四种使用方式
  8. Innotop简单介绍
  9. Codechef FIBTREE 树链剖分 主席树 LCA 二次剩余 快速幂
  10. mysql主从配置 转自http://www.cnblogs.com/sustudy/p/4174189.html
  11. UVA-10655 Contemplation! Algebra (矩阵)
  12. CS小分队第二阶段冲刺站立会议(6月1日)
  13. Object-c和Java中的代理
  14. HTTP的常见状态码
  15. Codeforces 894.C Marco and GCD Sequence
  16. Qt 4.8.5 jsoncpp lib
  17. centos 查看mysql数据库命令
  18. Kafka 0.9 新消费者API
  19. vue中的项目目录assets和staitc的区别
  20. T-SQL查询进阶--理解SQL Server中索引的概念,原理

热门文章

  1. flowable中传入审批人是list
  2. h5问题总结
  3. MongoDb学习(四)--Repository
  4. JAVA的一些笔记
  5. 使用sqlmap
  6. Java中jna的用法
  7. 深入理解MySQL索引(上)
  8. Spring框架之websocket源码完全解析
  9. 【Oracle】权限相关
  10. 使用.net中的API网关模式封装微服务