배달
시간 제한9초메모리 제한1024 MB
루트가 1번인 트리의 각 정점에 가치 A_i인 물건이 B_i개 있고, 각 사람이 1번에서 i번 정점까지 이동하며 지나는 정점의 물건을 하나씩 가져갈 때, 각 갱신 쿼리마다 N명이 가져가는 가치 합의 최댓값을 구합니다.
문제
개의 정점으로 구성되어 있고, 1번 정점이 루트인 트리가 주어진다. 번 정점에는 가치가 인 물건이 개 놓여있다. (; )
1번 정점에 명의 사람이 살고 있다. ()번째 사람은 1번 정점에서 출발해 번 정점으로 최소한의 간선을 통과해서 이동하려고 한다. 이때, 이동하면서 통과하는 정점들에 놓인 물건들 중 원하는 것을 정확히 하나 선택해서 번 정점으로 가지고 가야 한다.
아래 두 가지 종류의 쿼리가 총 번 주어진다. 쿼리는 누적되며, 여러분은 쿼리가 주어질 때마다 명의 사람이 가지고 간 물건의 가치의 합으로 가능한 최댓값을 구해야 한다.
- : 정점 에 있는 물건의 가치를 로 변경한다.
- : 정점 에 있는 물건의 개수를 로 변경한다.
입력
첫째 줄에 정점의 개수 과 정수 가 공백으로 구분되어 주어진다.
다음 개의 줄에 걸쳐 각 정점에 놓인 물건의 정보가 주어진다. 그중 ()번째 줄에는 , 가 공백으로 구분되어 주어진다.
다음 개의 줄에는 간선의 정보가 주어진다. 각 줄마다 두 정수 , 가 공백으로 구분되어 주어지며, 이는 정점 와 정점 가 간선으로 연결되어 있음을 의미한다.
그다음 줄에 쿼리의 개수 가 주어진다.
이후 개의 줄에 걸쳐 쿼리가 입력으로 주어지며, 쿼리는 세 정수 , , 로 이루어져 있다. 일 때는 정점 에 있는 물건의 가치를 로 바꾸는 쿼리, 일 때는 정점 에 있는 물건의 개수를 로 바꾸는 쿼리를 의미한다.
바로 직전 쿼리의 정답을 라고 하면, 쿼리에서 사용되는 수 , , , 는 아래 수식을 이용해 계산한다. 의 초깃값은 0이다.
출력
개의 줄에 걸쳐 답을 출력한다. ()번째 줄에는 번째 쿼리까지 차례대로 반영된 상황에서, 명의 사람이 갖고 간 물건의 가치의 합으로 가능한 최댓값을 출력한다.
제한
- ()
- ()
- 입력으로 주어진 그래프는 트리다.
- 입력으로 주어진 모든 수는 정수다.