트리에서의 거리


답안 제출

Points: 16
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

N개의 정점으로 이루어진 트리가 주어진다. 각 간선은 가중치(길이)를 가지고 있다.

루트 노드는 항상 1번 노드이다. 이때 두 노드 u, v가 주어졌을 때, 트리 상에서 두 노드 사이의 거리를 구하는 프로그램을 작성하시오.

트리에서 두 노드 사이의 거리는 두 노드를 잇는 유일한 최단 경로에 포함된 모든 간선 가중치의 합입니다.

입력

첫째 줄에 정점의 개수 N이 주어진다. (1 ≤ N ≤ 100,000)

다음 N-1개의 줄에는 트리의 연결 상태와 간선의 가중치를 나타내는 세 정수 u, v, w가 공백을 사이에 두고 주어진다. 이는 u번 노드와 v번 노드가 가중치 w인 간선으로 연결되어 있음을 의미한다. (1 ≤ w ≤ 10,000)

그다음 줄에는 질문의 개수 Q가 주어진다. (1 ≤ Q ≤ 100,000)

다음 Q개의 줄에 걸쳐 거리를 구해야 하는 두 노드 u, v가 공백을 사이에 두고 주어진다.

출력

Q개의 줄에 걸쳐, 각 질문마다 입력으로 주어진 두 노드 사이의 거리를 출력한다.

제약 조건

1 ≤ N ≤ 100,000

1 ≤ Q ≤ 100,000

1 ≤ w ≤ 10,000

루트 노드는 1번이다.

예제 입력 1

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

예제 출력 1

4
16
5

코멘트

현재 작성된 코멘트가 없습니다.