AT_jsc2023_final_g Fusion
题目描述
有一棵包含 $N$ 个顶点的树 $T$,顶点编号为 $1$ 到 $N$。第 $i$ 条边连接顶点 $A_i$ 和 $B_i$。每个顶点上写有一个整数,顶点 $i$ 上的整数为 $V_i$。
现在你要进行 $N-1$ 次如下操作:
- 选择树 $T$ 的一条边,将之进行缩约。假设被缩约的两个顶点上写有的整数分别为 $x,y$,则缩约后新顶点上写入的整数为 $x \times y + 1$。
所有操作顺序的选择方法共有 $(N-1)!$ 种。对所有这种方法,最终剩下的那个顶点上写有的值都求出,并将这 $(N-1)!$ 个值求和后对 $998244353$ 取余,输出所得的余数。
边的缩约指,对于图 $G$,把一条边 $(u,v)$ 进行缩约,等价于将顶点 $u$ 和 $v$ 合并成一个顶点。具体操作如下:
- 从 $G$ 删除边 $(u,v)$ 及顶点 $u$、$v$,新增一个新顶点(记作 $w$)。
- 对于 $u$ 的每个相邻顶点 $x$(即边 $(u,x)$),删除 $(u,x)$ 并添加 $(w,x)$。
- 对于 $v$ 的每个相邻顶点 $x$(即边 $(v,x)$),删除 $(v,x)$ 并添加 $(w,x)$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $V_1$ $V_2$ $\cdots$ $V_N$
> $A_1$ $B_1$
> $A_2$ $B_2$
> $\vdots$
> $A_{N-1}$ $B_{N-1}$
输出格式
输出答案。
说明/提示
### 样例解释 1
本例有 $2$ 种操作顺序:
- 第一次选择 $(1,2)$,缩约后新顶点上的数为 $1 \times 2+1=3$。第二次把该顶点与顶点 $3$ 缩约,得到 $3 \times 3+1=10$。
- 第一次选择 $(3,2)$,缩约后新顶点上的数为 $3 \times 2+1=7$。第二次把该顶点与顶点 $1$ 缩约,得到 $7 \times 1+1=8$。
因此总和为 $10+8=18$。
### 数据范围
- $1 \leq N \leq 5000$
- $1 \leq V_i < 998244353$
- $1 \leq A_i,B_i \leq N$
- 输入保证给出的是一棵树。
- 所有输入均为整数。
由 ChatGPT 5 翻译