膜方俱乐部 (travel.cpp/c/pas)

膜方俱乐部 (travel.cpp/c/pas)

【问题描述】
fateice来到了膜方俱乐部旅行。膜方俱乐部有N个分部,每个分部均有且仅有一个虫洞,但是这虫洞只能通往一个分部。每个分部有一个orzFang价值,第 i 个分部的orzFang价值为A[i]。
现在他想知道,从i个分部出发,并只通过虫洞前往下一个分部,orzFang价值之和最多是多少(到达一个分部多次只计算 1 次orzFang价值)。

【输入格式】
第一行为一个正整数 N。
第二行有N个非负整数A[i],表示了每个分部的orzFang价值。
第三行有N个正整数F[i],表示通过第i个分部的虫洞所到达的分部为 F[i],可能出现 F[i]=i的情况。

【输出格式】
包括 N 行,第 i 行包含一个非负整数,表示从第 i 个分部出发,orzFang 价值之和的最大值为多少。

travel.in

8 12
5 4 3 2 1 1 1 1
2 3 1 1 2 7 6 8
travel.out
12
12
14
13
2
2
1
【输入输出样例】

【数据规模】
对于20%的数据,N≤10。
对于40%的数据,N≤1000。
对于100%的数据,N≤200000,A[i]≤10000。

信息

难度
9
分类
(无)
标签
递交数
3
已通过
2
通过率
67%
被复制
1
上传者