M - To The LCA Editorial

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 600600

問題文

NN 頂点の根付き木があります。頂点には 1,2,,N1, 2, \ldots, N の番号がつけられています。この木の根は頂点 11 であり、頂点 i(2iN)i (2 \leq i \leq N) の親は頂点 PiP_i です。また、頂点 ii には数 AiA_i が書かれています。

MM 個の駒があります。駒には 1,2,,M1, 2, \ldots, M の番号がつけられています。駒 ii は現時点では頂点 ViV_i に置かれています。

あなたは、次の操作を 00 回以上の任意の回数行えます。

  • 二つの駒 ppqq を選ぶ。駒 pp が置かれている頂点を uu とし、駒 qq が置かれている頂点を vv とする。駒 pp を、頂点 uuvv の最近共通祖先に移動させる。

全ての操作を終えた後に駒 ii が置かれている頂点を tit_i とします。このときのスコアは i=1MAti\sum_{i=1}^{M} A_{t_i} で定められます。スコアの最大値を求めてください。

最近共通祖先 (LCA) とは

頂点 uuvv の最近共通祖先とは、両方の祖先であるような頂点のうち、根 (この問題では頂点 11) からの距離が最も大きい頂点のことです。二つの頂点の最近共通祖先は常に一つに定まります。

なお、頂点 xx の祖先とは、頂点 xx から始めて親の頂点に移動することを繰り返して辿り着けるような頂点 (xx 自身を含む) のことです。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Pii11 \leq P_i \leq i - 1 (2iN)(2 \leq i \leq N)
  • 1Ai1091 \leq A_i \leq 10^9 (1iN)(1 \leq i \leq N)
  • 2M2×1052 \leq M \leq 2 \times 10^5
  • 1ViN1 \leq V_i \leq N (1iM)(1 \leq i \leq M)
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN
P2P_2 P3P_3 \ldots PNP_N
A1A_1 A2A_2 \ldots ANA_N
MM
V1V_1 V2V_2 \ldots VMV_M

出力

スコアの最大値を 11 行に出力せよ。


入力例 1Copy

Copy
5
1 1 3 3
6 2 9 1 7
3
2 4 5

出力例 1Copy

Copy
24

次のように操作するのが最善です。

  1. pp として駒 11 を選び、駒 qq として駒 22 を選ぶ。駒 11 が頂点 22 から頂点 11 に移動する。
  2. pp として駒 22 を選び、駒 qq として駒 33 を選ぶ。駒 22 が頂点 44 から頂点 33 に移動する。
  3. pp として駒 33 を選び、駒 qq として駒 22 を選ぶ。駒 33 が頂点 55 から頂点 33 に移動する。

最終的に {ti}=(1,3,3)\lbrace t_i \rbrace = (1, 3, 3) となるので、スコアは 6+9+9=246 + 9 + 9 = 24 です。


入力例 2Copy

Copy
3
1 1
1 100 100
4
2 3 3 2

出力例 2Copy

Copy
400

一度も操作しないのが最善です。二つ以上の駒が同じ頂点に置かれていることもあることに注意してください。


入力例 3Copy

Copy
6
1 2 2 3 4
1 5 6 2 8 8
8
4 1 5 6 2 3 1 3

出力例 3Copy

Copy
40

原案: Forested



2025-04-15 (Tue)
15:28:31 +00:00