#573. 遍历

遍历

题目描述

给定一棵 nn 个结点以 11 为根的有根树,结点编号为 11nn,每个结点 ii 关联一个非负整数 aia_i,表示该结点的处理耗时。定义一条从根出发的路径合法当且仅当其满足以下条件:

  • 必须遍历整棵树,且最终回到结点 11
  • 每条边最多经过 22​ 次;

设路径长度为 LL,设结点 ii 第一次被访问的时间为 rir_i,则定义其完成时间为:

  • i1i \ne 1,则 ti=ri+ait_i = r_i + a_i
  • i=1i = 1,则 t1=L+a1t_1 = L + a_1

定义一条合法路径的耗时:

T=max1intiT = \max_{1 \le i \le n} t_i

请对于所有合法路径,求出最短的耗时。

输入格式

第一行一个正整数 nn (1n3×1051 \le n \le 3 \times 10^5);

第二行 nn 个非负整数 a1,a2,,ana_1, a_2, \dots, a_n (0ai1090 \le a_i \le 10^9);

接下来 n1n-1 行,每行两个正整数 ui,viu_i, v_i,表示树中的一条无向边。

输出格式

输出一个整数 TT,表示所有合法路径中最短的耗时。

样例输入

5
1 4 1 3 9
1 2
2 3
2 4
1 5

样例输出

10

数据范围

对于 40%40\% 的数据,n10n \le 10

对于 60%60\% 的数据,n3000n \le 3000

另有 8%8\% 的数据满足 i[1,n1],vi=ui+1\forall i \in [1, n-1], v_i = u_i + 1

另有 8%8\% 的数据满足 i[1,n1],ui=1,vi=i+1\forall i \in [1, n-1], u_i = 1, v_i = i + 1

对于 100%100\% 的数据,1n3×105,0ai1091 \le n \le 3 \times 10^5, 0 \le a_i \le 10^9,且输入构成一棵树。