점수 계산하기
시간 제한2초메모리 제한1024 MB
각 질의에서 r번 노드를 루트로 할 때 v번 직원의 점수를 구한다. 이는 v 자신의 score와, r로 가는 경로가 v를 지나는 모든 노드의 score 합이다.
문제
당신은 직원의 점수를 관리하는 프로그램을 만들고 있다. 회사의 조직도는 각 직원이 노드고 직속 상사가 부모 노드인 트리 형태로 나타낼 수 있다. 이 트리의 루트는 사장이다.
이 프로그램은 각 직원에게 두 가지의 점수를 부여한다. 하나는 그 직원이 얻게 되는 , 다른 하나는 특정 직원이 를 얻었을 때 그 직원을 의미하는 노드의 조상들이 받게 되는 점수다. 만약 특정 직원이 만큼의 를 얻는다면, 그 직원을 의미하는 노드의 조상 노드들은 모두 만큼의 점수를 얻게 된다.
이 프로그램을 이용하려는 회사에서 요구조건이 하나 생겼다. 바로 사장이 바뀌면 간선은 모두 유지하면서 그 사장을 루트로 하는 새로운 트리를 만든 뒤, 각 직원의 를 초기화하고 기존 를 이용해 새로운 트리에서 직원의 점수를 다시 계산해달라는 것이다.

예를 들어, 위와 같은 상황을 보자. 위 그림에서 노드 안의 수는 노드의 번호, 노드 옆의 작은 수는 그 노드의 를 의미한다.
그림처럼 번 노드가 루트인 상황에서 번 노드의 점수는 번 노드의 인 점과, 번 노드가 만큼의 를 얻으며 그 조상 노드가 얻게 된 만큼의 점수가 합쳐진 점이 된다.

그런데 만약 루트를 번으로 바꾼다면 트리의 형태가 위와 같이 변하게 된다. 이때 번 노드의 점수를 구해보면 번 노드의 인 점과, , , 번 노드가 각각 를 얻을 때 번 노드가 같이 얻게 되는 , , 의 가 더해져 총 점이 된다.
위와 같은 경우들을 처리하기 위해 우리는 트리와 각 직원이 직접 받은 점수가 주어진 상황에서 아래와 같은 질의를 번 처리해야 한다.
- : 번 노드가 루트일 때 번 직원의 점수
질의들이 주어질 때, 각 질의의 정답을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 노드의 수 과 질의의 수 가 공백으로 구분되어 주어진다.
둘째 줄에 번 직원부터 번 직원까지 순서대로 각 직원이 얻은 가 공백으로 구분되어 주어진다.
셋째 줄부터 줄에 걸쳐 트리의 간선 정보를 의미하는 가 공백으로 구분되어 주어진다.
그리고 개의 줄에 걸쳐 문제에 제시된 질의가 주어진다.
주어지는 그래프는 트리이다.
출력
각 질의의 정답을 한 줄에 하나씩 입력받은 순서대로 출력한다.