题号:NC14620
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld
题目描述
小杰是学院中公认的计算机大神,有一天小杰受邀去机房帮忙接网线,他三下五除二地就帮忙完成了。可是善于思考地他仍意有未尽,他觉得这次的线路有许多奇妙的性质,故来请教你。
机房有n台不同的主机(编号为0,1,2,⋯,n−1),共连有n条网线,每台主机恰连着两条网线,通向其他的主机。相互之间有网线相连的主机可以通信,主机可以转发其他主机的信息,换句话说,如果主机A和主机C可以通信,主机B和主机C可以通信,那么主机A和主机B可以通信。现在想在一些主机间添加一些网线,使得任意一个主机故障时,其他的主机之间仍能互相通信(注:在一个主机故障时,所有与该主机直接相连的线路将无法使用)。那么问题来了,在添加的网线最少时,请问有多少种连线的方案,由于连线方案可能非常多,请将方案数对1000,000,007取模。
输入描述:
第一行表示主机数n。
接下来有n行,第i(i=0,1,2,⋯,n−1)行有两个数a,b,表示主机i和主机a,主机i和主机b各有网线相连。
输入有多组数据,n=0时,表示输入结束,请不要有对该组数据任何输出。
输出描述:
每组数据输出一行,表示方案数对1000,000,007取模的结果。(行末不要有多余的空白字符)
示例1
输入
复制
5
2 3
4 4
0 3
0 2
1 1
12
11 11
10 10
9 9
8 8
7 7
6 6
5 5
4 4
3 3
2 2
1 1
0 0
2
1 1
0 0
0
备注:
2≤n≤3×105,
不超过10组数据 n≥2×105,
不超过20组数据 n≥104,
总数据组数不超过200