#C16. LCA的贡献

LCA的贡献

LCA的贡献

题目描述

给出一棵 nn 个节点的树,默认 11 号节点为根。每一个节点有一个权值 xix_i

现在给你一个数组 aaa1,a2,,ana_1,a_2,\dots,a_n,这个数组是一个 1n1\sim n 的排列。

对于 aa 数组的任意区间 [l,r][l,r]lrl \le r),这个区间 al,al+1,,ara_l,a_{l+1},\dots,a_r 这些节点的 LCA 是 kk,那么这个区间的贡献就是 xkx_k

最后求 aa 数组的所有区间的贡献总和。

输入格式

11 行一个数 nn,表示节点的个数。

第二行 n1n-1 个数,第 ii 个数是 pi+1p_{i+1}pip_i 表示节点 ii 的父亲是 pip_i。数据保证 pi<ip_i < i

第三行 nn 个数表示一个排列,a1,a2,,ana_1,a_2,\dots,a_n

第四行 nn 个数,x1,x2,,xnx_1,x_2,\dots,x_n,表示节点的权值。

输出格式

输出一个数表示答案。

样例

样例输入

5
1 1 1 1
5 2 3 1 4
31244 44588 57025 99626 20260

样例输出

565183

数据范围

对于 20%20\% 的数据,n100n \le 100

对于 40%40\% 的数据,n2000n \le 2000

对于 60%60\% 的数据,n50000n \le 50000

对于另外 20%20\% 的数据,排列 aia_i 是用如下的算法生成的:从一号点开始对树做 dfs,到达一个节点的时候输出这个节点。

对于全部数据,n200000n \le 2000000xi1000000 \le x_i \le 100000pi<ip_i < iaia_i 是一个排列。