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