Tree Path

4

4 votes
C++, Graph Representation, Algorithms, Graphs
Problem

Given an undirected tree with N nodes. Every node has a weight assigned to it denoted by array W.

Among all the simple paths of length K in the given tree, Sam can choose to pick any path and traverse on it.

Help Sam choose a path such that the maximum weight node present on the path is as minimum as possible.

Return -1, if no such path exists.

Note:

  • Length of the simple path, is defind by the number of edges present on the path.

Input

  • First line contains two space-separated integers N K.
  • Second line contains N space-separated integers denoting the array W.
  • Next N - 1 lines contains two space separated integers u v, denoting an edge between node u and v.

Output

Print an integer denoting the maximum weight node present on the path traversed by Sam.

Constraints

\(1 \le N \le 10^5 \\ 1 \le K \le N \\ 1 \leq u, v \leq N \\ 1 \le W[i] \le 10^5\)

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

There are 3 simple paths of length 2 in the given tree,

  • 1 - 2 - 3, maximum weight node 4
  • 1 - 2 - 4, maximum weight node 2
  • 2 - 1 - 5, maximum weight node 5

Sam, can pick the path with the maximum weight 2.

Editor Image

?