배달

시간 제한9초메모리 제한1024 MB

요약
루트가 1번인 트리의 각 정점에 가치 A_i인 물건이 B_i개 있고, 각 사람이 1번에서 i번 정점까지 이동하며 지나는 정점의 물건을 하나씩 가져갈 때, 각 갱신 쿼리마다 N명이 가져가는 가치 합의 최댓값을 구합니다.
난이도

어려움10점 중 9점

유형
그리디, 트리, DFS, 구현
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 구성되어 있고, 1번 정점이 루트인 트리가 주어진다. ii번 정점에는 가치가 A_iA\_i인 물건이 B_iB\_i개 놓여있다. (1≤i≤N1 \le i \le N; 1≤B_i≤31 \le B\_i \le 3)

1번 정점에 NN명의 사람이 살고 있다. ii(1≤i≤N1 \le i \le N)번째 사람은 1번 정점에서 출발해 ii번 정점으로 최소한의 간선을 통과해서 이동하려고 한다. 이때, 이동하면서 통과하는 정점들에 놓인 물건들 중 원하는 것을 정확히 하나 선택해서 ii번 정점으로 가지고 가야 한다.

아래 두 가지 종류의 쿼리가 총 QQ번 주어진다. 쿼리는 누적되며, 여러분은 쿼리가 주어질 때마다 NN명의 사람이 가지고 간 물건의 가치의 합으로 가능한 최댓값을 구해야 한다.

  • 11 kk aa: 정점 kk에 있는 물건의 가치를 aa로 변경한다.
  • 22 kk bb: 정점 kk에 있는 물건의 개수를 bb로 변경한다.

입력

첫째 줄에 정점의 개수 NN과 정수 FF가 공백으로 구분되어 주어진다.

다음 NN개의 줄에 걸쳐 각 정점에 놓인 물건의 정보가 주어진다. 그중 ii (1≤i≤N1 \le i \le N)번째 줄에는 A_iA\_i, B_iB\_i가 공백으로 구분되어 주어진다.

다음 N−1N-1개의 줄에는 간선의 정보가 주어진다. 각 줄마다 두 정수 uu, vv가 공백으로 구분되어 주어지며, 이는 정점 uu와 정점 vv가 간선으로 연결되어 있음을 의미한다.

그다음 줄에 쿼리의 개수 QQ가 주어진다.

이후 QQ개의 줄에 걸쳐 쿼리가 입력으로 주어지며, 쿼리는 세 정수 ww, xx, yy로 이루어져 있다. o=1o = 1일 때는 정점 kk에 있는 물건의 가치를 aa로 바꾸는 쿼리, o=2o = 2일 때는 정점 kk에 있는 물건의 개수를 bb로 바꾸는 쿼리를 의미한다.

바로 직전 쿼리의 정답을 pp라고 하면, 쿼리에서 사용되는 수 oo, kk, aa, bb는 아래 수식을 이용해 계산한다. pp의 초깃값은 0이다.

  • o=(p×F+w−1+2)mod  2+1o = (p \times F + w - 1 + 2) \mod 2 + 1
  • k=(p×F+x−1+N)mod  N+1k = (p \times F + x - 1 + N) \mod N + 1
  • a=(p×F+y−1+109)mod  109+1a = (p \times F + y - 1 + 10^9) \mod 10^9 + 1
  • b=(p×F+y−1+3)mod  3+1b = (p \times F + y - 1 + 3) \mod 3 + 1

출력

QQ개의 줄에 걸쳐 답을 출력한다. ii (1≤i≤Q1 \le i \le Q)번째 줄에는 ii번째 쿼리까지 차례대로 반영된 상황에서, NN명의 사람이 갖고 간 물건의 가치의 합으로 가능한 최댓값을 출력한다.

제한

  • 2≤N≤100,0002 \le N \le 100\\,000
  • 0≤F≤10 \le F \le 1
  • 1≤A_i≤1091 \le A\_i \le 10^9 (1≤i≤N1 \le i \le N)
  • 1≤B_i≤31 \le B\_i \le 3 (1≤i≤N1 \le i \le N)
  • 1≤u,v≤N1 \le u,v \le N
  • 1≤Q≤100,0001 \le Q \le 100\\,000
  • 0≤w,x,y≤1090 \le w,x,y \le 10^9
  • 입력으로 주어진 그래프는 트리다.
  • 입력으로 주어진 모든 수는 정수다.

예제2

  1. 예제 1

    입력
    6 0
    1 1
    9 1
    2 3
    10 3
    1 3
    6 3
    1 3
    2 5
    3 4
    6 2
    5 3
    10
    1 5 2
    1 5 8
    0 0 2
    0 3 1
    1 2 6
    1 2 7
    0 0 1
    0 3 2
    1 2 5
    1 1 5
    
    예상 출력
    30
    38
    38
    38
    37
    37
    37
    37
    37
    41
    
  2. 예제 2

    입력
    6 1
    4 3
    2 3
    4 1
    1 1
    8 2
    6 3
    4 1
    5 4
    3 4
    6 1
    2 4
    10
    1 3 2
    1 4 999999980
    1 2 999999968
    1 3 999999977
    1 5 1
    1 3 2
    0 4 999999971
    0 0 0
    1 1 999999969
    1 2 0
    
    예상 출력
    28
    34
    30
    35
    35
    35
    34
    34
    29
    27