shake!마을 방황하기

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

요약
가중치가 있는 트리 위에서 Q개의 지시가 이동 중에 겹쳐 들어올 때 규칙대로 이동을 시뮬레이션하고, 교차로에서 쉰 총 시간을 구한다.
난이도

어려움10점 중 8점

유형
시뮬레이션, 트리, 구현, 최단 경로
정답자
아직 제출이 없습니다

문제

shake!마을은 NN개의 교차로와 N−1N-1개의 양방향 도로로 이루어져 있는 트리 형태의 마을이다. 당신은 처음에 11번 교차로에 위치해 있으며 MM분동안 QQ번의 지시에 따라야 한다.

각 지시는 ii분에 주어지며 jj번 교차로로 이동하라는 내용이다. 또한 각 지시가 주어지는 시점은 전부 다르다. 지시를 받으면 즉시 목적지인 교차로를 향해 최단경로로 이동을 시작해야 하며 이전 지시를 끝마치지 않은 상황에서 새 지시가 주어진다면 이전 지시를 무시하고 새로 주어진 지시에 따라 새로운 목적지로 이동을 시작해야 한다. 그러나 shake!마을의 도로들은 중앙분리대로 각 방향이 구분되어 있기 때문에 안전상의 이유로 교차로가 아닌 도로 위에서 방향을 바꾸는 것이 불가능하다. 따라서 도로 위를 지나는중에 새로운 지시를 받으면 우선 가고 있던 방향으로 다음 교차로를 만날 때까지 이동한 후 가장 최근의 지시를 이행해야 한다. 이때 교차로에 도착하는 것과 동시에 새로운 지시가 주어진다면 그 지시를 따른다.

총 MM분 중 몇 분 동안 도로를 따라 움직이지 않고 가만히 교차로에서 휴식을 취했는지를 구하여라.

입력

첫째 줄에 NN과 MM, QQ가 주어진다. (1≤N,Q≤105;1 \leq N, Q \leq 10^{5}; Q≤M≤105Q \leq M \leq 10^{5})

둘째 줄부터 N−1N-1개의 줄에 걸쳐 도로에 대한 정보 uu vv dd가 주어진다. 이는 uu번 교차로와 vv번 교차로를 잇는 도로가 존재하고 이를 지나는데 dd분이 걸린다는 의미이다. (1≤u,v≤N;1 \leq u, v \leq N; 1≤d≤1051 \leq d \leq 10^{5})

이후 QQ개의 줄에 이동 지시들이 주어지는 시점을 기준으로 오름차순으로 정렬되어 ii jj 의 형태로 주어진다. (0≤i<M;0 \leq i < M; 1≤j≤N1 \leq j \leq N)

모든 입력은 정수이다.

출력

휴식을 취한 총 시간을 출력하라.

예제2

  1. 예제 1

    입력
    3 10 3
    1 2 2
    2 3 3
    0 3
    1 1
    3 3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 20 7
    1 2 1
    2 3 2
    2 4 1
    4 5 3
    0 5
    1 3
    3 2
    6 1
    9 5
    12 4
    15 2
    
    예상 출력
    5