만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리와 쿼리 2

시간 제한2초메모리 제한512 MB

요약
정점 10만 개까지의 가중치 트리에서 경로 비용과 경로 위 k번째 정점을 묻는 질의에 답한다.
난이도

보통10점 중 7점

유형
트리, 이분 탐색, 누적 합, 연결 리스트
정답자
아직 제출이 없습니다

문제

N개의 정점으로 이루어진 트리가 있다. 트리는 사이클이 없는 무방향 연결 그래프이다. 정점에는 1번부터 N번까지 번호가 매겨져 있고, 간선에는 1번부터 N-1번까지 번호가 매겨져 있다.

트리에서 두 정점을 잇는 경로는 하나뿐이다. 아래 두 쿼리를 처리하는 프로그램을 작성하시오.

  • 1 u v: u에서 v로 가는 경로의 비용을 출력한다. 경로의 비용은 그 경로에 포함된 간선의 비용을 모두 더한 값이다.
  • 2 u v k: u에서 v로 가는 경로에 있는 정점 중 k번째 정점을 출력한다. u가 1번째 정점이고 v가 마지막 정점이다.

입력

첫째 줄에 N (2 ≤ N ≤ 100,000)이 주어진다.

둘째 줄부터 N-1개 줄에는 i번 간선이 잇는 두 정점 번호 u와 v, 그리고 간선의 비용 w가 주어진다. w는 1,000,000 이하의 자연수이다.

다음 줄에 쿼리의 개수 M (1 ≤ M ≤ 100,000)이 주어진다.

다음 M개 줄에는 쿼리가 한 줄에 하나씩 주어진다. 2번 쿼리의 k는 u에서 v로 가는 경로에 포함된 정점의 수보다 작거나 같은 자연수이다.

출력

각 쿼리의 결과를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    6
    1 2 1
    2 4 1
    2 5 2
    1 3 1
    3 6 2
    2
    1 4 6
    2 4 6 4
    
    예상 출력
    5
    3
    
  2. 예제 2

    입력
    2
    2 1 1000000
    4
    1 1 2
    2 1 2 2
    1 2 2
    2 2 1 1
    
    예상 출력
    1000000
    2
    0
    2