만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

두 트리

시간 제한5초메모리 제한1024 MB

요약
두 트리에서 모두 정점 i의 서브트리에 속하는 정점 k 가운데 a_k가 가장 큰 값을 각 i마다 구합니다.
난이도

보통10점 중 7점

유형
트리, DFS, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

두 트리 T1T_1, T2T_2와 수열 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N이 주어진다. 두 트리는 각각 정점을 NN개 가지며, 정점에는 1부터 NN까지의 번호가 겹치지 않게 붙어 있다. 두 트리의 루트는 모두 1번 정점이다.

T1T_1과 T2T_2에서 ii번 정점을 루트로 하는 서브트리에 속한 정점 번호의 집합을 각각 PiP_i, QiQ_i라 하자. mi=max⁡{ak∣k∈Pi∩Qi}m_i = \max\{a_k \mid k \in P_i \cap Q_i\}로 정의한다.

m1,m2,⋯ ,mNm_1, m_2, \cdots, m_N을 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에 NN이 주어진다. (1≤N≤250 000)(1 \leq N \leq 250\,000)

두 번째 줄에 정수 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N이 공백으로 구분되어 주어진다. (1≤ai≤109)(1 \leq a_i \leq 10^9)

다음 N−1N-1개의 줄에는 T1T_1의 각 간선이 잇는 두 정점의 번호 uu, vv가 공백으로 구분되어 주어진다. (1≤u,v≤N; u≠v)(1 \leq u, v \leq N;\ u \neq v)

그다음 N−1N-1개의 줄에는 T2T_2의 각 간선이 잇는 두 정점의 번호 uu, vv가 공백으로 구분되어 주어진다. (1≤u,v≤N; u≠v)(1 \leq u, v \leq N;\ u \neq v)

T1T_1과 T2T_2가 트리 형태임이 보장된다.

출력

m1,m2,⋯ ,mNm_1, m_2, \cdots, m_N을 차례로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    6
    7 10 5 14 8 100
    4 5
    1 5
    5 6
    1 2
    3 6
    1 4
    2 4
    1 5
    3 6
    4 6
    
    예상 출력
    100
    10
    5
    14
    8
    100