#HK4144. 「CCO 2019」Winter Driving

「CCO 2019」Winter Driving

题目描述

译自 CCO 2019 Day1 T3「Winter Driving

在冰天雪地的北极地区,散落着编号为 11NNNN 个城市。每个城市里都住着一些居民,第 ii 个城市的人口有 AiA_i 人。这些城市之间总共有 N1N-1 条道路,编号为 22NN。第 jj 条道路连接着编号为 jj 的城市和编号为 PjP_j 的城市,满足 PjP_j 永远小于 jj (也就是说道路都是单向的,从编号较大的城市通向编号较小的城市)。需要注意的是,任何一个城市最多只能连接 3636 条道路。

北极的冬天来啦!为了安全起见,所有道路都变成了只能单向通行的高速公路。也就是说,第 jj 条道路现在只能从城市 jj 开往城市 PjP_j,或者只能从城市 PjP_j 开回城市 jj,不能两边都通行。

现在,每个居民都想给其他城市的所有居民寄送一张节日明信片。居民 xx 可以给居民 yy 寄明信片的前提是,xx 所在的城市能够通过这些高速公路到达 yy 所在的城市。

问题来了,在所有道路都变成高速公路之后,最多可以寄出多少张节日明信片呢?

输入格式

第一行包含一个正整数 NN,表示城市的数量。

第二行包含 NN 个用空格隔开的正整数 A1,A2,,ANA_1, A_2, \ldots , A_N,依次表示每个城市的人口数量。

第三行包含 N1N-1 个用空格隔开的正整数 P2,P3,,PNP_2, P_3, \ldots , P_N,依次表示每条道路连接的较小编号的城市。

输出格式

输出一行,包含一个正整数,表示所有道路变成高速公路之后最多可以寄出的明信片总数。

4
3 3 4 1
1 2 1
67

一种将道路变成高速公路的方法是:将第 22 条路变成从城市 22 到城市 11 的单向路,将第 33 条路变成从城市 33 到城市 22 的单向路,将第 44 条路变成从城市 11 到城市 44 的单向路。

如下图所示,圆圈表示城市,数字表示该城市的人口数量。第一幅图展示了道路的初始状态,第二幅图展示了所有道路变成高速公路之后的情况。

城市 33 的每个居民可以向城市 33 的居民发送 33 张明信片,向城市 22 的居民发送 33 张明信片,向城市 11 的居民发送 33 张明信片,向城市 44 的居民发送 11 张明信片,总共可以从城市 33 寄出 4040 张明信片。

类似地,其他城市的居民也可以寄出明信片:

  • 城市 22 的居民每人可以寄 66 张,共计 1818 张。
  • 城市 11 的居民每人可以寄 33 张,共计 99 张。
  • 城市 44 的居民无法寄出任何明信片。

因此,总共可以寄出的明信片数量为 40+18+9=6740 + 18 + 9 = 67 张。

数据范围与提示

对于 20%20\% 的数据,N10N \leq 10
对于另外的 20%20\% 的数据,N1000,D10N \leq 1000,D \leq 10
对于另外的 20%20\% 的数据,D18D \leq 18
对于另外的 20%20\% 的数据,总共有 3737 个城市,其中 11 个城市连接了其他 3636 个城市,其余 3636 个城市只连接了这 11 个城市;
对于 100%100\% 的数据,2N2×1052 \leq N \leq 2\times 10^51Ai100001 \leq A_i \leq 100001Pjj1 \leq P_j \leq j。我们将任何一个城市连接的道路数量记为 DD。题目保证 D36D \leq 36