P5619 [DBOI2019] 持矢
题目背景
:::epigraph[doby]
吾射不亦精乎?
:::
题目描述
doby 是一个弓箭手,他很喜欢拿箭。
这天,他来到一个射箭场,发现射箭场老板放好了 $n$ 个靶子(从 $1\sim n$ 标号),中间画了 $n-1$ 条线,使得这 $n$ 格靶子和 $n-1$ 条线组成了一个**根为** $1$ 的树。每个靶子上都有分数。
他为了历练自己,选择了一个点(称为父点),然后对它子树(包括它)的每个靶子射一次,每个靶子射中概率为 $50\%$。每次射完一个子树,他获得的总分为射中的所有靶子的分数之**积**。
现在他想知道,选择不同的点作为父点,他期望总分为多少?由于总分可能很大,你需要把结果对 $19260817$(质数)取模。
输入格式
输入两个正整数,靶子总数 $n$ 和询问次数 $m$。
接下来一行,$n$ 个正整数,表示编号为 $1\sim n$ 的靶子的分数。
接下来 $n-1$ 行,每行两个数 $u,v$,描述树的一条无向边。
接下来 $m$ 行,每行一个正整数 $x(1\leq x\leq n)$,表示询问以靶子 $x$ 为父节点时,doby 期望获得的总分。
输出格式
输出一行,一个正整数 $\operatorname{out}$。
为了减少输出,定义 $\operatorname{out}$ 为对于每组询问,期望获得的总分之和。由于是期望,需要你在计算 $\frac{a}{b}$ 时,将其改为 $a\times b^{-1} \bmod 19260817$。你需要把输出 $\operatorname{out}$ 也对 $19260817$ 取模。。
说明/提示
**注意:由于模数较大,请注意求逆元时中间结果的溢出。**
如果你不需要卡常,使用快速幂求逆元就够用了。
【样例 #1 说明】
答案为$\frac{5}{4}$,可能的总分有$0$,$1$,$2$。
【样例 #2 说明】
答案分别为 $9630410$、$10834247$、$15047607$,即 $\frac{3}{2}$、$\frac{599}{16}$、$\frac{2999}{32}$。
Subtask #1($10$ 分):
$1\leq n,m\leq 10$。
Subtask #2($40$ 分):
$1\leq n,m\leq 10^5$。
Subtask #3($50$ 分):
$1\leq n,m\leq 2 \times 10^6$。
所有测试点的时间限制统一为 1.5s,内存限制统一为 125M。
**题目提供者:1jia1**