아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

도시 운전

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

요약
정점 N개와 간선 N개로 이루어진 연결 그래프에서 여러 정점 쌍 사이의 최단 경로를 구한다.
난이도

어려움10점 중 8점

유형
트리, 그래프, 최단 경로, DFS
정답자
아직 제출이 없습니다

문제

최근 여가 시간에 샌프란시스코를 자주 다니기 시작했는데, 도심에서 운전하는 일이 여간 번거로운 게 아니라는 것을 깨달았습니다. 하지만 관심 있는 장소는 NN개뿐이므로, 운전을 좀 더 편하게 만들어 보기로 했습니다. GPS가 없고 여러 경로를 외우기도 어렵기 때문에, NN쌍의 장소 사이를 오가는 길과 걸리는 시간을 적어 두었습니다. 각 경로는 양방향이며(어느 방향으로 가든 걸리는 시간이 같습니다), 이 경로들만 이용해도 임의의 장소에서 다른 임의의 장소로 이동할 수 있습니다.

이제 주말 이동 계획을 세우면서, QQ개의 장소 쌍에 대해 적어 둔 경로만 이용해 두 장소 사이를 가장 빠르게 오가는 방법을 알아내야 합니다.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다.

각 테스트 케이스의 첫 줄에는 장소의 수이자 경로의 수인 정수 NN (3≤N≤100,0003 \le N \le 100{,}000)이 주어집니다.

다음 NN개의 줄에는 각각 세 정수 uu, vv, ww (1≤w≤1,0001 \le w \le 1{,}000)가 주어지며, 이는 장소 uu와 vv(0번부터 시작) 사이를 양방향으로 잇는 경로이고 이동에 ww의 시간이 걸린다는 뜻입니다.

그다음 줄에는 질의의 수인 정수 QQ (1≤Q≤10,0001 \le Q \le 10{,}000)가 주어집니다.

이어지는 QQ개의 줄에는 각각 두 정수 uu, vv가 주어지며, 장소 uu에서 vv까지 가는 최소 시간을 구해야 합니다.

입력의 끝은 N=0N = 0인 줄로 표시되며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다 QQ개의 줄을 출력합니다. ii번째 줄에는 ii번째로 질의된 장소 쌍 uu, vv 사이를 이동하는 최소 시간을 정수 하나로 출력합니다.

예제3

  1. 예제 1

    입력
    7
    0 1 2
    0 2 3
    1 3 2
    2 3 8
    2 4 3
    3 5 1
    1 6 7
    3
    4 5
    0 6
    1 2
    0
    
    예상 출력
    11
    9
    5
    
  2. 예제 2

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

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