编程题
### 问题描述 康康有一棵 $n$ 个结点的树,其中 $1$ 号结点是根。每次玩家可以在树上行走,走过一条边需要 $1$ 秒的时间,但只能往当前所在的点的某个儿子走,不能往父亲走。每次游戏需要从 $s$ 号结点走到 $t$ 号结点去。 玩家有一个总死亡次数,初始为 $0$。每个结点上有一个程序猿和一个参数 $w_i$,如果走到结点 $i$ 的时候,当前总的死亡次数小于 $w_i$,那么玩家就会立刻死亡并回到起点 $s$,且该死亡过程不需要时间;如果总死亡次数大于等于 $w_i$,那么玩家就能熟练地对付程序猿从而安然无恙。注意每次游戏时不需要考虑 $s$ 和 $t$ 上的程序猿。 该游戏会进行若干轮,每轮会清空总死亡次数并给出一组新的 $s, t$。现在请你对于每一轮游戏输出走到 $t$ 所需要的最短时间。 保证每个询问的 $s$ 可以到达 $t$。 ### 输入格式 第一行一个正整数 $n$,表示树的结点数。 第二行 $n$ 个正整数,其中第 $i$ 个表示 $w_i$。 第三行 $n-1$ 个整数,第 $i$ 个表示 $i+1$ 号点的父亲结点 $f_i$。 第四行一个正整数 $q$,表示游戏轮数。 接下来 $q$ 行,每行两个整数 $s, t$,表示一轮游戏。 ### 输出格式 输出 $q$ 行,每行一个整数表示每轮游戏所花的最短秒数。 ### 样例输入 ``` 5 1 1 2 4 4 1 1 2 4 1 1 5 ``` ### 样例输出 ``` 9 ``` ### 评测数据规模 $1 \leq n, q \leq 10^5$,$1 \leq w_i \leq 10^9$,$f_i \leq i$,$1 \leq s, t \leq n$。
查看答案
赣ICP备20007335号-2