NOIP临近,刷刷题压压惊,发现不但没压惊,还反增焦虑
题目描述
煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。
请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数。
输入输出格式
输入格式:
输入文件有若干组数据,每组数据的第一行是一个正整数 N N (),表示工地的隧道数,接下来的 N N 行每行是用空格隔开的两个整数 和 T T ,表示挖 与挖煤点 T T 由隧道直接连接。输入数据以 结尾。
输出格式:
输入文件中有多少组数据,输出文件 output.txt 中就有多少行。每行对应一组输入数据的 结果。其中第 i i 行以 Case i: 开始(注意大小写,Case 与 i 之间有空格,i 与:之间无空格,: 之后有空格),其后是用空格隔开的两个正整数,第一个正整数表示对于第 组输入数据至少需 要设置几个救援出口,第二个正整数表示对于第 i i 组输入数据不同最少救援出口的设置方案总数。输入数据保证答案小于 。输出格式参照以下输入输出样例。
输入输出样例
输入样例#1:
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
输出样例#1:
Case 1: 2 4
Case 2: 4 1
说明
Case 1 的四组解分别是(2,4),(3,4),(4,5),(4,6);
Case 2 的一组解为(4,5,6,7)。
题目概要
给出一张无向图,要求选定尽量少的点,使得在删去任意一点时,所有点能与至少一个选取的点相通,求最小选取数,与最少选取数的方案数
思路
这题要求所有的点都与选定点联通,只是要求通路要两条以上
正常联想到只有删掉割点才对答案有影响,而对于一个被割点隔开的区域,可以认为是删掉任何边都对答案无影响的,因为任意两点间有两条及以上的道路
所以我们只用考虑每个被隔开的区域:
若一个区域连接着俩个或以上的割点,表明不管删掉哪个割点,该区域都可以与其他区域共用点,所以没必要选取点
若一个区域连接着一个割点,表明只要删掉该割点,这个区域便与外界失去了联系,则需要在这个区域内建点,而方案数就乘上该区域的点数
若一个区域无连接的割点,即该区域本来就没与其他区域联通,所以在该区域内需要建俩点(以防其中一点消失),方案数乘上 n(n−1)2 n ( n − 1 ) 2 ( n n <script type="math/tex" id="MathJax-Element-16">n</script>为区域内点数)