AT_codefestival_2015_final_i 風船ツリー

题目描述

りんご正在玩一组由 $N$ 个气球组成的气球链。每个气球 $i\ (1 \le i \le N)$ 的绳子长度为 $L_i$。她拿着第一个气球 $1$ 的绳子,并将气球 $i\ (2 \le i \le N)$ 的绳子系在气球 $P_i$ 上。我们称这种连接形式为“气球树”。 气球树的高度定义为其中所有气球中最高气球的高度。具体来说,第一个气球 $1$ 的高度是 $L_1$,而对于其他气球 $i\ (2 \le i \le N)$,它的高度为气球 $P_i$ 的高度加上 $L_i$。 りんご想要通过解绑一些绳子使得气球树的高度刚好等于天花板的高度。当解绑气球 $i\ (2 \le i \le N)$ 的绳子时,气球 $i$ 连同所有连接着的气球都会飞走,从而从气球树中移除。 现在有 $Q$ 种可能的天花板高度,请为每个高度计算,使得气球树高度恰好等于该高度所需解绑的最少绳子数量。如果无法做到,则输出 `-1`。

输入格式

输入由如下标准格式给出: - 第一行是一个整数 $N\ (2 \le N \le 10^5)$,表示气球的个数。 - 第二行包含 $N$ 个整数,其中第 $i\ (1 \le i \le N)$ 个整数 $L_i\ (1 \le L_i \le 10^4)$,是气球 $i$ 的绳子长度。 - 第三行含有 $N-1$ 个整数,其中第 $i\ (1 \le i \le N-1)$ 个整数 $P_{i+1}\ (1 \le P_{i+1} \le i)$ 表示气球 $i+1$ 的绳子系在气球 $P_{i+1}$ 上。 - 第四行是一个整数 $Q\ (1 \le Q \le 10^5)$,表示可能的天花板高度数量。 - 接下来的 $Q$ 行,每行是一个整数 $H_i\ (1 \le H_i \le 10^9)$,表示一个可能的天花板高度。

输出格式

输出应包括 $Q$ 行。第 $i\ (1 \le i \le Q)$ 行为使气球树高度恰好为 $H_i$ 所需解绑的最少绳子数量。如果无法实现,输出 `-1`。每行输出之后应有换行符。 **本翻译由 AI 自动生成**

说明/提示

### Sample Explanation 1 下図はそれぞれ、最初の風船ツリー、高さを $ 2 $ にした風船ツリー、高さを $ 3 $ にした風船ツリーの様子を表しています。赤い×印は、ヒモをほどく箇所を表しています。 !\[figure1\](https://code-festival-2015-final.contest.atcoder.jp/img/other/code\_festival\_2015\_final/final/foo1000tree.png)