小苯的DFS
题号:NC317234
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有一棵 n 个节点的树,节点编号从 1n,其中 1 号节点是根。每个节点 i 有一个点权 a_i
\hspace{15pt}现在小苯要从根节点 1 出发,对这棵树进行深度优先搜索(DFS)。在访问每个节点 u 时,他会随机等概地打乱 u 的所有子节点的访问顺序(即每个排列等概率出现),然后按照这个随机顺序依次递归进入每个子节点。
\hspace{15pt}在 DFS 的过程中,小苯会按照访问顺序记录一个序列 b:每次第一次到达某个节点 x 时,就将 a_x 添加到序列 b 的末尾。注意,根节点 1 也会被记录在序列的开头。

\hspace{15pt}你的任务就是求出最终得到的序列 b单调不降的概率,对 998244353 取模。

输入描述:

\hspace{15pt}每个测试文件包含多组测试数据。第一行输入一个整数 T\ (1 \leq T \leq 10^4) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行一个整数 n\ (1 \leq n \leq 2 \times 10^5)
\hspace{15pt}第二行 n 个整数 a_1, a_2, \dots, a_n\ (1 \leq a_i \leq 10^9)
\hspace{15pt}接下来 n-1 行,每行两个整数 u, v,表示树中的一条边。

\hspace{15pt}保证所有测试数据中 n 的总和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组数据,输出一个整数,表示序列 b 单调不降的概率对 998244353 取模的结果。
示例1

输入

复制
2
3
1 2 3
1 2
1 3
3
2 1 3
1 2
1 3

输出

复制
499122177
0