#A. [SNOI2024] 树 V 图

    Type: RemoteJudge 3000ms 1024MiB

[SNOI2024] 树 V 图

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

你有一棵 nn 个点的无根树,节点的编号为 1,2,,n1, 2, \ldots, n。定义树上两点之间的距离 dis(i,j)\operatorname{dis}(i, j) 为树上 ii 点到 jj 点的简单路径上的边数。

现在有 kk 个关键点 a1,a2,,aka_1, a_2, \ldots, a_k,对于每个点,我们想求出距离它最近的关键点是哪个点。也就是对于一个点 vv,令 f(v)f(v) 表示令 dis(v,ai)\operatorname{dis}(v, a_i) 最小的 ii,如果有多个 ii 满足条件,那么我们会选择其中最小的 ii

现在,我们给出了 f(1),f(2),,f(n)f(1), f(2), \ldots, f(n),问有多少组可能的 (a1,a2,,ak)(a_1, a_2, \ldots, a_k) 满足条件。由于答案可能很大,输出对 998244353998244353 取模的结果。

输入格式

多组测试数据,第一行一个整数 TT 表示数据组数。
对于每组测试数据,第一行两个整数 n,kn, k,表示节点个数和关键点个数。
接下来 n1n - 1 行,每行两个整数 u,vu, v,表示一条树边 (u,v)(u, v)
接下来一行,nn 个整数,f(1),f(2),,f(n)f(1), f(2), \ldots, f(n)。注意:数据不保证一定存在一组可能的 (a1,a2,,ak)(a_1, a_2, \ldots, a_k)

输出格式

对于每组数据,输出一个整数,表示答案对 998244353998244353 取模的结果。

3
3 3
1 2
2 3
1 2 1
3 2
1 2
2 3
1 2 2
3 2
1 2
2 3
2 1 1

0
1
2

1
10 5
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
1 1 2 2 3 3 4 4 5 5

13

提示

【样例 #1 解释】

在第一个样例中,对于第二组数据,一个解为 (1,2)(1, 2)。对于第三组数据,两个解为 (2,1),(3,1)(2, 1), (3, 1)

注意,当多个点距离相同时,我们选择的是最小的 ii 而不是 aia_i


【样例 #3】

见附件中 voronoi/voronoi3.invoronoi/voronoi3.ans,这个样例满足测试点 343 \sim 4 的条件限制。


【样例 #4】

见附件中 voronoi/voronoi3.invoronoi/voronoi3.ans,这个样例满足测试点 7107 \sim 10 的条件限制。


【数据范围】

对于所有的数据,保证 1T101 \le T \le 102kn3×1032 \le k \le n \le 3 \times {10}^31f(i)k1 \le f(i) \le k

具体如下:

测试点编号 nn \le 特殊性质
121 \sim 2 1515
343 \sim 4 30003000 A
565 \sim 6 B
7107 \sim 10

特殊性质 A:保证树是一条链。
特殊性质 B:保证 k=2k = 2

省选T1练习

Not Attended
Status
Done
Rule
IOI
Problem
2
Start at
2024-2-27 19:00
End at
2024-2-27 21:30
Duration
2.5 hour(s)
Host
Partic.
15