#arc0294. [arc029_4]高橋君と木のおもちゃ

[arc029_4]高橋君と木のおもちゃ

问题文

高桥君从妹妹那里收到了一件木制玩具作为生日礼物。

这个木制玩具由 NN 个球和 N1N-1 条节构成。每个球都被编号为 11NN,每个节都被编号为 11N1N-1

N1N-1 条节连接了两个不同的球,它们都从编号较大的球指向编号较小的球。另外,除了球 11 以外的任何球,都有一个连接到编号较小的球的节。

每个球可以存储一个整数。一开始,球 i(1iN)i (1 ≦ i ≦ N) 中存储了整数 sis_i

高桥君决定与妹妹一起,在手中拿着的 MM 个整数上玩木制玩具游戏。

游戏的目标是使得木制玩具中每个球中存储的整数之和尽可能大。

高桥君重复以下步骤 MM 次:

  1. 获取一个手中的整数。第 ii 步获取的整数是 tit_i
  2. 执行以下操作之一:
  • 什么都不做,将整数 tit_i 丢弃。
  • 选择木制玩具中的一个球,将整数 tit_i 放置在该球中。

当球 j(1jN)j (1 ≦ j ≦ N) 接收到一个整数时,执行以下动作:

  • j=1j = 1 时,球 11 丢弃原来存储的整数,并将接收到的整数存储在球 11 中。
  • j2j ≧ 2 时,球 jj 将原来存储的整数放置在连接到球 jj 的节的目标球上,并将接收到的整数存储在球 jj 中。

直到木制玩具不再变化,高桥君和妹妹才能继续下一步。

请计算最终可以得到的木制玩具中所有球中存储的整数之和的最大值。


输入

从标准输入中按以下格式给出输入。

NN s1s_1 s2s_2 : sNs_N a1a_1 b1b_1 a2a_2 b2b_2 : aN1a_{N-1} bN1b_{N-1} MM t1t_1 t2t_2 : tMt_M

  • 11 行包含一个整数 N(2N5,000)N (2 ≦ N ≦ 5,000),表示木制玩具中球的数量。
  • 22 行到第 NN 行描述了初始时每个球中的整数。其中第 ii 行(1iN1 ≦ i ≦ N)包含一个整数 si(1si1,000,000,000)s_i (1 ≦ s_i ≦ 1,000,000,000),表示球 ii 中最初存储的整数。
  • N+2N+2 行到第 2N2N 行描述了每个节的信息。其中第 ii 行(1iN11 ≦ i ≦ N-1)包含两个用空格分隔的整数 ai,bi(1aibiN)a_i, b_i (1 ≦ a_i < b_i ≦ N),表示从球 bib_i 出发的一条节连接到球 aia_i
  • 2N+12N+1 行包含一个整数 M(1M5,000)M (1 ≦ M ≦ 5,000),表示手中拿着的整数的数量。
  • 2N+22N+2 行到第 2N+M+12N+M+1 行描述了手中拿着的整数。其中第 ii 行(1iM1 ≦ i ≦ M)包含一个整数 ti(1ti1,000,000,000)t_i (1 ≦ t_i ≦ 1,000,000,000),表示第 ii 步获取的整数。

部分分

本问题设置了部分分。

  • 如果能在数据集 11 中满足 N7N ≦ 7M8M ≦ 8 的条件下给出正确答案,将获得 1010 分。
  • 如果能在数据集 22 中满足 N16N ≦ 16 的条件下给出正确答案,将额外获得 2020 分。
  • 如果能在无附加约束的数据集 33 中给出正确答案,将额外获得 7070 分。

输出

请输出最终能够得到的木制玩具中所有球中存储的整数之和的最大值。输出应该以一行结束,包含一个换行符。


示例1

7
4
7
5
1
5
2
4
1 2
1 3
1 4
2 5
2 6
6 7
8
2
8
1
3
6
3
7
5

输出1

40

按以下步骤操作:

  1. 取出整数 22。不对木制玩具执行任何操作。
  2. 取出整数 88。将它放置在木制玩具的球 44 中。
  3. 取出整数 11。不对木制玩具执行任何操作。
  4. 取出整数 33。不对木制玩具执行任何操作。 5