#1537
Platinum V

물류회사

시간 제한
1s
메모리 제한
512MB
제출
34
정답
14
맞힌 사람
11
정답 비율
42.3%

문제

물류 회사 ana에는 11번부터 NN번까지 번호가 붙은 지점 NN개가 있다. 각 지점에는 본사로 보내야 할 운송물이 쌓여 있다.

11번을 제외한 각 지점에는 본사 방향의 다른 지점으로 향하는 일방통행 도로가 하나씩 안내되어 있다. 회사의 트럭은 이 도로만 이용한다. 11번 지점 옆에는 본사가 있어, 트럭은 11번 지점까지의 수거를 마치면 본사에 도착하여 운행을 종료한다.

전체 도로망은 아래의 그림과 같이 11번 지점을 루트로 하는 트리를 이룬다. 따라서 어느 지점에서 출발하더라도 안내된 도로를 따라가면 본사에 도착한다.

처음에 ii번 지점에는 운송물 xix_i개가 있다. 트럭이 실어 간 운송물은 해당 지점에서 사라지며 다시 공급되지 않는다.

QQ대의 트럭이 입력으로 주어진 순서대로 한 대씩 운행한다. jj번째 트럭은 vjv_j번 지점에서 빈 상태로 출발하며, 운송물을 최대 tjt_j개까지 실을 수 있다. 트럭은 출발 지점부터 부모 지점을 차례로 거쳐 11번 지점까지 이동하며 다음 규칙으로 운송물을 싣는다.

  1. 방문한 지점에 운송물이 있고 적재 공간이 남아 있다면, 남은 적재 공간만큼 최대한 싣는다.
  2. 운송물이 없는 지점은 건너뛰고 다음 지점으로 이동한다. 적재 공간이 가득 차면 더 이상 싣지 않고 본사까지 이동한다.

각 트럭이 본사에 도착했을 때 실은 운송물의 수와 모든 트럭이 옮긴 운송물의 총합을 구해 보자.

입력

첫째 줄에 지점의 수 NN과 트럭의 수 QQ가 공백으로 구분되어 주어진다. (1≤N≤100,000;1≤Q≤200,000)(1 \le N \le 100,000; 1 \le Q \le 200,000)

둘째 줄에 N−1N-1개의 정수 p2,p3,…,pNp_2, p_3, \ldots, p_N이 공백으로 구분되어 주어진다. N=1N=1이면 둘째 줄은 빈 줄이다. pip_i는 ii번 지점에서 본사 방향으로 한 번 이동했을 때 도착하는 부모 지점의 번호다. (1≤pi≤N)(1 \le p_i \le N) 주어진 지점과 길은 11번 지점을 루트로 하는 트리를 이룬다.

셋째 줄에 NN개의 정수 x1,x2,…,xNx_1, x_2, \ldots, x_N이 공백으로 구분되어 주어진다. xix_i는 처음에 ii번 지점에 놓인 운송물의 수다. (2≤xi≤109)(2 \le x_i \le 10^9)

다음 QQ개의 줄 중 jj번째 줄에는 두 정수 vjv_j와 tjt_j가 공백으로 구분되어 주어진다. 이는 jj번째 트럭이 vjv_j번 지점에서 출발하며, 최대 tjt_j개의 운송물을 실을 수 있음을 뜻한다. (1≤vj≤N;2≤tj≤109)(1 \le v_j \le N; 2 \le t_j \le 10^9)

출력

첫째 줄부터 QQ개의 줄에 걸쳐, jj번째 줄에 jj번째 트럭이 실은 운송물의 수를 출력한다.

마지막 줄에 모든 트럭이 실은 운송물의 총합을 출력한다.

예제 1

6 5
1 1 2 2 3
4 2 6 2 4 2
4 6
5 8
6 4
6 10
4 2

출력 1

6
6
4
4
0
20
문제를 만든 사람
김승현
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출

제출 내역이 없습니다.

맞은 사람
#순위사용자언어시간메모리코드 길이
10321🥇
황현석
C++8ms4296KB954B
10985🥈
서재형
C++20ms2264KB925B
11010🥉
jwpassion1
C++21ms3032KB923B
105534
Kokiri is cute
C++22ms2776KB1421B
104875
cpp = competitive python programming
C++22ms3032KB923B
106126
실외기선풍기세탁기
C++22ms3544KB976B
105977
SW-IT Contest는 충남대학교 컴퓨터인공지능학부 알고리즘 동아리 ANA에서 주최하는 프로그래밍 대회로, 팀으로 출전하여 알고리즘 문제를 해결하는 대회입니다.
C++22ms3736KB1143B
106998
스피드런도 런이다
PyPy76ms73276KB613B
109529
OOOOOOOO
C++104ms35224KB2787B
1092410
상받고싶습니다
C++279ms2264KB1190B
1095511
박성재
C++284ms2264KB1190B
난이도 투표
Platinum V2명 투표· 17일 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
11010
맞았습니다
C++21ms3032KB923B2026. 10. 08. 03:57
10985
맞았습니다
C++20ms2264KB925B2026. 10. 06. 16:15
10955
맞았습니다
C++284ms2264KB1190B2026. 10. 05. 11:55
10952
맞았습니다
C++104ms35224KB2787B2026. 10. 05. 07:54
10951
틀렸습니다
C++--2818B2026. 10. 05. 07:53