题目描述
wjx最近迷上了在树上玩耍,现在wjx给你一棵有n个点的树,最开始每个点的点权为0,m次询问,每次询问一个点x,将与点x距离<=1的所有点的点权+1,对于每次询问后,计算树上所有点的点权和,得到答案为ans[i],然后ans[i]=ans[i]*i,最后输出Σans(所有ans[i]的和)。(由于答案可能很大,需要对1e9+7取模)
输入
第一行两个整数n,m。 (1<=n<=100000,1<=m<=1000000)
第二行n-1个数 ,第i个数x表示点i+1的父亲,即(i+1的父亲节点为x)。保证 x<i+1
第三行m个数,表示每次询问的点。
输出
输出一个数,表示每次操作后得到的答案*i求和。(其中i为操作序号)
提示
第一次操作 将 1 2 3 点权+1 点权总和为3 ans[1]=3*1=3
第二次操作将1 2 4 点权+1 点权总和为6 ans[2]=6*2=12
第三次操作将1 3 5 6 点权+1 点权总和10 ans[3]=10*3=30
总答案为 3+12+30=45