#P1602. 排列计数(perm)

排列计数(perm)

perm

题目描述

Yevin Kang 有一棵包含 NN 个顶点的树,顶点编号为 1,2,…,N1,2,\dots,N。树是一个不含环的无向连通图。

对于任意两个顶点 1≤u,v≤N1\le u,v\le N,令 d(u,v)d(u,v) 表示连接 uu 和 vv 的简单路径上的边数。特别地,d(u,u)=0d(u,u)=0。

给定一个正整数 KK。如果 1,2,…,N1,2,\dots,N 的一个排列 p1,p2,…,pNp_1,p_2,\dots,p_N 同时满足以下条件,则称它是一个好排列:

  • 对于所有 2≤i≤N2\le i\le N,均有 d(pi−1,pi)≤Kd(p_{i-1},p_i)\le K;
  • 对于所有 1≤i<j≤N1\le i<j\le N,均有 d(1,pi)≤d(1,pj)d(1,p_i)\le d(1,p_j)。

令 f(K)f(K) 表示好排列的数量。

现在给定 QQ 个正整数 K1,K2,…,KQK_1,K_2,\dots,K_Q,请依次求出 f(K1),f(K2),…,f(KQ)f(K_1),f(K_2),\dots,f(K_Q),答案对 109+710^9+7 取模。

输入格式

输入包含多组测试用例。

第一行包含一个整数 TT,表示测试用例的数量。

对于每组测试用例:

  • 第一行包含两个整数 N,QN,Q;
  • 接下来 N−1N-1 行,每行包含两个整数 u,vu,v,表示树上有一条连接顶点 uu 和 vv 的边;
  • 最后一行包含 QQ 个整数 K1,K2,…,KQK_1,K_2,\dots,K_Q。

保证给出的 N−1N-1 条边构成一棵树。

输出格式

对于每组测试用例输出一行,共包含 QQ 个整数,依次表示 f(K1),f(K2),…,f(KQ)f(K_1),f(K_2),\dots,f(K_Q) 对 109+710^9+7 取模后的结果。

输入输出样例 #1

输入 #1

2
3 3
1 2
1 3
1 2 3
6 3
1 2
1 3
3 4
3 5
3 6
1 2 3

输出 #1

0 2 2
0 6 12

说明/提示

在第一组测试用例中,当 K=2K=2 或 K=3K=3 时,[1,2,3][1,2,3] 和 [1,3,2][1,3,2] 都是好排列。排列 [2,1,3][2,1,3] 对任何 KK 都不是好排列,因为它不满足到顶点 11 的距离非递减这一条件。可以证明,当 K=1K=1 时不存在好排列。

在第二组测试用例中,[1,3,2,4,5,6][1,3,2,4,5,6] 是 K=3K=3 时的好排列,但不是 K=2K=2 时的好排列,因为 d(2,4)=3>2d(2,4)=3>2。

数据范围

  • 1≤T≤5×1051\le T\le 5\times 10^5;
  • 1≤Q≤N≤5×1051\le Q\le N\le 5\times 10^5;
  • 1≤Ki≤N1\le K_i\le N;
  • 所有测试用例中 NN 的总和不超过 5×1055\times 10^5。

子任务

子任务 ∑N\sum N 的范围 QQ 的范围 KiK_i 的范围 分值
1 1≤∑N≤101\le \sum N\le 10 1≤Q≤N1\le Q\le N 1≤Ki≤N1\le K_i\le N 88
2 1≤∑N≤5×1051\le \sum N\le 5\times 10^5 1≤Q≤min⁡(2,N)1\le Q\le \min(2,N) 1≤Ki≤min⁡(2,N)1\le K_i\le \min(2,N) 1212
3 1≤∑N≤30001\le \sum N\le 3000 1≤Q≤min⁡(5,N)1\le Q\le \min(5,N) 1≤Ki≤N1\le K_i\le N 2020
4 1≤∑N≤5×1051\le \sum N\le 5\times 10^5 1≤Q≤N1\le Q\le N 2828
5 3232

附加文件