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.

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

?