철도

아직 제출이 없습니다시간 제한1초메모리 제한32 MB

문제

몇 년 전, 바이트랜드(Byteland) 정부는 대중교통을 좀 더 편리하게 만들기 위해 철도망을 건설하기로 했다. 그러나 예산이 넉넉하지 않았기 때문에, 교통부 장관은 철도망을 최대한 단순하게 만들고자 했고 다음 조건을 모두 만족해야 했다.

  • 각 열차는 정확히 두 도시를 직접 연결하며, 중간 정차역은 없다.
  • 각 열차는 양방향으로 운행하고, 두 방향의 요금은 같다.
  • 임의의 도시에서 다른 임의의 도시로 (환승을 포함하여) 이동할 수 있다.
  • 열차의 수는 가능한 한 적다.

가장 적은 수의 열차로 모든 도시를 연결하므로, 두 도시 사이의 경로는 항상 유일하다.

이제 철도망이 완성되었다. 남은 골칫거리는 표를 발권하는 일이다. 승객이 A에서 B까지 여러 열차를 갈아타며 이동하면, 직원이 그 열차들의 요금을 일일이 손으로 더해야 하는데 이는 번거롭고 실수하기도 쉽다. 이를 해결하기 위해, 표의 요금을 자동으로 계산하는 프로그램을 작성해야 한다.

프로그램은 먼저 철도망의 구성과 각 열차의 요금을 입력받는다. 그다음 여러 개의 질의에 답해야 한다. 각 질의는 두 도시 xxyy로 주어지며, 답은 xx에서 yy까지 가는 표의 요금, 즉 두 도시를 잇는 경로 위에 있는 열차 요금의 총합이다.

입력

첫째 줄에 두 정수 NNQQ가 공백 하나로 구분되어 주어진다. NN은 도시의 수이고 (1N1000001 \le N \le 100\,000), QQ는 질의의 수이다 (1Q20000000001 \le Q \le 2\,000\,000\,000). 도시는 11번부터 NN번까지 번호가 매겨져 있다.

다음 N1N-1개의 줄에는 각 열차의 정보가 세 정수 aia_i, bib_i, cic_i로 주어지며 공백으로 구분된다 (1ai,biN1 \le a_i, b_i \le N, 0ci20000000000 \le c_i \le 2\,000\,000\,000). 이는 도시 aia_i와 도시 bib_i를 잇는 요금 cic_i의 열차가 있음을 뜻한다. 철도망은 항상 트리를 이룸이 보장된다.

그다음 QQ개의 줄에는 각각 두 정수 xix_iyiy_i가 주어진다 (1xi,yiN1 \le x_i, y_i \le N, xiyix_i \ne y_i). 요금을 계산해야 하는 두 도시이다.

출력

정확히 QQ개의 줄을 출력한다. ii번째 줄에는 정수 하나, 즉 xix_i에서 yiy_i까지 가는 표의 요금을 출력한다. 모든 요금은 32비트 부호 있는 정수 범위에 들어감이 보장된다.