OJ现已增加邮箱找回密码功能,还没有绑定邮箱的同学们请抓紧时间,以免密码丢失无法找回


问题1303--wjx在树上游戏

1303: wjx在树上游戏

时间限制: 1 Sec  内存限制: 128 MB
提交: 67  解决: 23
[提交] [状态] [讨论版] [命题人:]

题目描述

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为操作序号)

样例输入 Copy

6 3
1 1 2 3 3
1 2 3

样例输出 Copy

45

提示

第一次操作 将 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

来源/分类