Logo
(追記) (追記ここまで)

28425번 - 점수 계산하기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 1024 MB102675764.773%

문제

당신은 직원의 점수를 관리하는 프로그램을 만들고 있다. 회사의 조직도는 각 직원이 노드고 직속 상사가 부모 노드인 트리 형태로 나타낼 수 있다. 이 트리의 루트는 사장이다.

이 프로그램은 각 직원에게 두 가지의 점수를 부여한다. 하나는 그 직원이 얻게 되는 $score,ドル 다른 하나는 특정 직원이 $score$를 얻었을 때 그 직원을 의미하는 노드의 조상들이 받게 되는 $bonus$ 점수다. 만약 특정 직원이 $x$만큼의 $score$를 얻는다면, 그 직원을 의미하는 노드의 조상 노드들은 모두 $x$만큼의 $bonus$ 점수를 얻게 된다.

이 프로그램을 이용하려는 회사에서 요구조건이 하나 생겼다. 바로 사장이 바뀌면 간선은 모두 유지하면서 그 사장을 루트로 하는 새로운 트리를 만든 뒤, 각 직원의 $bonus$를 초기화하고 기존 $score$를 이용해 새로운 트리에서 직원의 점수를 다시 계산해달라는 것이다.

예를 들어, 위와 같은 상황을 보자. 위 그림에서 노드 안의 수는 노드의 번호, 노드 옆의 작은 수는 그 노드의 $score$를 의미한다.

그림처럼 1ドル$번 노드가 루트인 상황에서 3ドル$번 노드의 점수는 3ドル$번 노드의 $score$인 47ドル$점과, 4ドル$번 노드가 18ドル$만큼의 $score$를 얻으며 그 조상 노드가 얻게 된 18ドル$만큼의 $bonus$ 점수가 합쳐진 65ドル$점이 된다.

그런데 만약 루트를 5ドル$번으로 바꾼다면 트리의 형태가 위와 같이 변하게 된다. 이때 2ドル$번 노드의 점수를 구해보면 2ドル$번 노드의 $score$인 16ドル$점과, 1ドル,ドル 3ドル,ドル 4ドル$번 노드가 각각 $score$를 얻을 때 2ドル$번 노드가 같이 얻게 되는 43ドル,ドル 47ドル,ドル 18ドル$의 $bonus$가 더해져 총 124ドル$점이 된다.

위와 같은 경우들을 처리하기 위해 우리는 트리와 각 직원이 직접 받은 점수가 주어진 상황에서 아래와 같은 질의를 $Q$번 처리해야 한다.

  • $r$ $v$: $r$번 노드가 루트일 때 $v$번 직원의 점수

질의들이 주어질 때, 각 질의의 정답을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 노드의 수 $N$과 질의의 수 $Q$가 공백으로 구분되어 주어진다. $(1 \le N \le 100,000円;$ 1ドル \le Q \le 100,000円)$

둘째 줄에 1ドル$번 직원부터 $N$번 직원까지 순서대로 각 직원이 얻은 $score$가 공백으로 구분되어 주어진다. $(0 \le score \le 10,000円)$

셋째 줄부터 $N - 1$줄에 걸쳐 트리의 간선 정보를 의미하는 $u, v$가 공백으로 구분되어 주어진다. $(1 \le u, v \le N)$

그리고 $Q$개의 줄에 걸쳐 문제에 제시된 질의가 주어진다.

주어지는 그래프는 트리이다.

출력

각 질의의 정답을 한 줄에 하나씩 입력받은 순서대로 출력한다.

제한

예제 입력 1

5 10
43 16 47 18 63
1 2
1 3
3 4
2 5
1 1
5 2
2 3
3 4
1 5
3 5
2 3
1 3
2 4
4 1

예제 출력 1

187
124
65
18
63
63
65
65
18
122

힌트

출처

University > 한국항공대학교 > 제3회 한국항공대학교 프로그래밍 경진대회(KAUPC) I번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /