@Override
시간 제한3초메모리 제한1024 MB
정점 i를 루트로 하는 서브트리의 모든 정점 가중치를 i의 조상 가중치 최댓값으로 덮어쓰는 갱신과 서브트리 가중치 합을 구하는 질의를 처리한다.
문제
번 정점을 루트로 하는 트리가 있다. 트리는 총 개의 정점으로 구성된다.
각 정점 는 정수로 이루어진 가중치 를 가지고 있으며, 기본적으로 자신의 가중치인 를 사용한다.
아래 두 가지 종류의 쿼리를 처리하는 프로그램을 작성하시오.
- : 정점 를 루트로 하는 서브 트리의 모든 정점 에 대하여, 의 조상의 가중치 중 최댓값을 각 에 덮어쓴다. 정점 는 의 조상이 아니다.
- : 정점 를 루트로 하는 서브 트리의 모든 정점의 가중치의 합을 출력한다.
입력
첫째 줄에 정점의 개수 과 쿼리의 개수 가 공백으로 구분되어 주어진다.
둘째 줄에 각 정점의 가중치 이 공백으로 구분되어 주어진다.
다음 개의 줄에 트리의 간선을 나타내는 두 정점 가 공백으로 구분되어 주어진다.
이어서 개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다.
번 쿼리가 하나 이상 주어짐이 보장된다.
입력되는 모든 수는 정수이다.
출력
모든 번 쿼리의 결과를 입력된 순서대로 각 줄에 하나씩 출력한다.