← Home
write a go solution for Description:
You are given a tree with n vertices numbered from 1 to n. The height of the i-th vertex is h_i. You can place any number of towers into vertices, for each tower you can choose which vertex to put it in, as well as choose its efficiency. Setting up a tower with efficiency e costs e coins, where e>0.

It is considered that a vertex x gets a signal if for some pair of towers at the vertices u and v (uneqv, but it is allowed that x=u or x=v) with efficiencies e_u and e_v, respectively, it is satisfied that min(e_u,e_v)>=h_x and x lies on the path between u and v.

Find the minimum number of coins required to set up towers so that you can get a signal at all vertices.

Input Format:
The first line contains an integer n (2<=n<=200,000) — the number of vertices in the tree.

The second line contains n integers h_i (1<=h_i<=10^9) — the heights of the vertices.

Each of the next n-1 lines contain a pair of numbers v_i,u_i (1<=v_i,u_i<=n) — an edge of the tree. It is guaranteed that the given edges form a tree.

Output Format:
Print one integer — the minimum required number of coins.

Note:
In the first test case it's optimal to install two towers with efficiencies 2 at vertices 1 and 3.

In the second test case it's optimal to install a tower with efficiency 1 at vertex 1 and two towers with efficiencies 3 at vertices 2 and 5.

In the third test case it's optimal to install two towers with efficiencies 6 at vertices 1 and 2.. Output only the code with no comments, explanation, or additional text.