GCD on Tree

5

4 votes
Regular expression, Hard, Algorithms, String, Trees
Problem

Given a tree with N vertices. Each vertex has a value ai. For vertex i and j, if some vextex x is on the path between i and j, and x is neither i nor j, we update Ansx=max(Ansx,GCD(ai,aj))GCD means the greatest common divisor function. Ans is an array of N zeros initial.

Find the Ans array after all updation.

Input Format

First line contains an integer N(1N105).

Second line contains N integers, represent the array a(1ai105).

Each of the next N1 lines contains two integers u,v, represent an edge in the tree.

Output Format

N integers in one line, represent the array Ans, separated by space.

Sample Input
7
2 1 6 1 6 1 3
1 2
2 3
3 4
4 5
3 6
6 7
Sample Output
0 2 3 6 0 3 0
Time Limit: 3
Memory Limit: 256
Source Limit:
Explanation

Vertex 2 is updated by 1 and 5,

Vertex 3,6 is updated by 5 and 7,

Vertex 4 is updated by 3 and 5,

Editor Image

?