Sum of Sums

5

1 votes
Algorithms, Depth First Search, Graphs, Medium
Problem

Given a undirected tree containing N nodes where ith node has value a(i). Let us define cost of the tree as C, where
C=Ni=1f(i)
f(i)=jg(j);wherejϵsubtreeofi
g(j)=ka(k);wherekϵsubtreeofj
Find a root of the tree such that the cost of the tree is minimum.

Input

The first line of input contains N (1 ≤ N ≤ 100,000) - the number of nodes in the tree.
The second line contains N integers a1, a2, ..., aN, where ai (1 ≤ ai106) is the value stored at the ith node.
The next N-1 lines contains two integers u and v, meaning that there is an edge connecting u and v.

Output

Print two integers, the root of the tree such that the cost of tree is minimum and minimum cost. If there are multiple possible values of root, print the minimum one.

Constraints

  • 1N1000,1a(i)106 in 40% of test cases.
  • 1N105,1a(i)106 in 60% of test cases.

NOTE: The value of C will fit in 64-bit integer.

Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

If root is 1 the cost C will be 25.
If root is 2 the cost C will be 14.
If root is 3 the cost C will be 15.
So the answer would be 2 14.

Editor Image

?