SP1879 GAMETIME - Game Time

题目描述

Jack 最近迷上了一款新的超级马里奥游戏。在游戏中,有 **n** 座城堡。桃子公主被库巴王绑架,囚禁在编号为 n - 1 的城堡中(从 0 开始编号)。库巴王拥有一个庞大的家族:他有儿子库巴,儿子还有孙子库巴,依此类推。他们占据了所有的 n 座城堡,每座城堡中都有一个库巴,而库巴王居住在最后一座城堡。 超级马里奥的任务就是征服这些城堡并拯救被困的桃子公主。他每次可以自由选择一座未被征服的城堡进行挑战,需要耗费 **T\[i\]** 时间击败其中的库巴。如果不能在规定时间内完成,游戏立即结束。如果成功击败,失去城堡的库巴会马上去找他的父亲求助。如果一个库巴的两个或更多儿子被打败,他将勃然大怒。超级马里奥必须立刻前往这个生气的库巴所在的城堡并击败他,否则桃子公主将不保。如果成功击败库巴王并征服最后一座城堡,游戏便以胜利告终,桃子公主得救。 Jack 对这款游戏非常着迷,但由于要为即将到来的 ACM/ICPC 比赛做准备,他承诺自己每月只玩一次。然而,他非常想享受游戏的乐趣而不愿意编程,因此想在不违背承诺的情况下最大化他玩游戏的时间。

输入格式

输入包括多组测试数据。每组数据开始时有一个整数 **N** (0 < N ≤ 100,000),代表城堡和库巴的数量。之后是两行,每行有 N 个数字。 第一行是 N 个数字 **T\[i\]** (0 < **T\[i\]** ≤ 100),表示超级马里奥征服编号为 i 的城堡所需的时间。 第二行是 N 个数字 **P\[i\]** (-1 ≤ P\[i\] < N),表示在每座城堡中的库巴的父亲所在的城堡编号。-1 表示没有父亲,并且最后一个库巴(库巴王)总是没有父亲。输入以一个数字 0 结束,该 0 不需处理。

输出格式

对于每组测试数据,输出 Jack 在一个月内最多可以玩的游戏时间。每个结果占一行。 **本翻译由 AI 自动生成**