题目背景
小 Z 看不惯树,所以他总想在树上随机添加一些边。他认为二分图是很和谐的,所以他想知道将一棵树变为二分图的方案数。你能否回答他的询问?
题目描述
对于一颗无向有根树,定义 f(i,k) 表示在以 i 为根的子树中,在其内部连 k 条边,使得这颗子树变为一个二分图的方案数。请注意,加边时允许与原树边重边,但任意两条新加的边都不能重合。
给定一棵 n 个点的无向有根树,根节点为 1 号点。对于每个 i∈[1,n],求 f(i,k) 对 pi 取模的值。
输入格式
输入共 n+1 行。
第 1 行 2 个整数,分别表示树的点数 n 和参数 k。
接下来,第 2 至 n 行,每行 2 个正整数,分别表示一条边连接的两个点的编号 ui 与 vi。
第 n+1 行 n 个整数,分别表示每次询问时的模数 pi。
输出格式
输出共 1 行 n 个整数,分别表示每次询问的答案。
提示
【样例 1 解释】
在这棵树上,连接 (u,v)∈{(1,3),(1,5),(1,6),(2,3),(2,5),(2,6),(3,4),(4,5),(4,6)} 即可使树变为二分图。
【数据范围】
本题开启捆绑测试。
对于 100% 的数据,1≤n≤5×105,1≤k≤20,1≤ui,vi≤n,2≤pi≤2×109,pi 为素数。最多有 99 个大小不同的 pi。保证 pi>k。
Subtask |
n≤ |
Special |
Score |
1 |
5×105 |
A |
10 |
2 |
103 |
No |
15 |
3 |
5×105 |
B |
4 |
No |
60 |
- Special A:保证 k=1;
- Special B:保证 vi=ui+1。
【提示】
本题 IO 量较大,请使用较快速的 IO 方式。