CF BUDDY
← Problems·

1098A · Sum in the tree

1600 · constructive algorithms, dfs and similar, greedy

Problem: Mitya has a rooted tree with nn vertices indexed from 11 to nn, where the root has index 11. Each vertex vv initially had an integer number av0a_v \ge 0 written on it. For every vertex vv Mitya has computed svs_v: the sum of all values written on the vertices on the path from vertex vv to the root, as well as hvh_v — the depth of vertex vv, which denotes the number of vertices on the path from vertex vv to the root. Clearly, s1=a1s_1=a_1 and h1=1h_1=1.

Then Mitya erased all numbers ava_v, and by accident he also erased all values svs_v for vertices with even depth (vertices with even hvh_v). Your task is to restore the values ava_v for every vertex, or determine that Mitya made a mistake. In case there are multiple ways to restore the values, you're required to find one which minimizes the total sum of values ava_v for all vertices in the tree.

Input Format: The first line contains one integer nn — the number of vertices in the tree (2n1052 \le n \le 10^5). The following line contains integers p2p_2, p3p_3, ... pnp_n, where pip_i stands for the parent of vertex with index ii in the tree (1pi<i1 \le p_i < i). The last line contains integer values s1s_1, s2s_2, ..., sns_n (1sv109-1 \le s_v \le 10^9), where erased values are replaced by 1-1.

Output Format: Output one integer — the minimum total sum of all values ava_v in the original tree, or 1-1 if such tree does not exist.

Sample Cases

Case 1

Input

5
1 1 1 1
1 -1 -1 -1 -1

Output

1

Case 2

Input

5
1 2 3 1
1 -1 2 -1 -1

Output

2

Case 3

Input

3
1 2
2 -1 1

Output

-1

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback