HihoCoder1470 : 公平的游戏
描述
有一些人在玩一个游戏。游戏的舞台发生在一个 n 个点的树上。
这个游戏分为很多轮,每一轮都有一些玩家参与,每个玩家都会降落在一条给定的边上(不同玩家的边不同)。之后这 n 个点上都会随机出现一个0或者1作为权值。
我们说这一轮游戏是公平的,当且仅当这一轮中,对于每个玩家,如果将她所在的边删除,那么两边对应的两个子树的点权和是相等的。
对于每一轮,我们给出每个玩家的位置,你需要计算出该轮游戏是公平的概率 p。为了保证输出是整数,你只需要输出 p × 2n % (109+7) 就可以了。
输入
树的点从1开始标号。
第一行两个数 n 和 m 分别表示树的点数和游戏的轮数。
接下来 n-1行每行两个数 a 和 b 表示一条边。
接下来 m 行每行表示一轮游戏。
其中的第 i 行由一个数字 ti 开头,表示这轮游戏有 ti 个玩家,
接下来 ti 个数对,其中第 j 个数对 ai,j 和 bi,j 表示第 j 个玩家所在的边的两个端点。
n, m ≤ 100000
所有 ti 的和 ≤ 1000000
输出
输出 m 行,每行一个数表示答案。
样例输入
5 5 1 2 1 3 3 4 3 5 4 1 2 1 3 3 4 3 5 1 3 4 2 3 4 1 2 1 3 5 2 3 4 3 5
样例输出
1 5 2 5 2
和组合数有关。
It is your time to fight!