만드는 중입니다

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

또 다른 최단 경로 질의

시간 제한12초메모리 제한2048 MB

요약
가중치가 있는 평면 그래프에서 각 질의의 두 정점 s, t를 잇는 간선 3개 이하 최단 경로 길이를 구하고, 경로가 없으면 -1을 출력합니다.
난이도

어려움10점 중 9점

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

문제

평면 그래프는 간선끼리 끝점에서만 만나도록 평면 위에 그릴 수 있는 그래프이다. 즉, 어떤 두 간선도 서로 교차하지 않는다. 이러한 그림을 평면 그래프 또는 평면 임베딩이라고 한다. 형식적으로는 각 정점을 평면 위의 한 점에 대응시키고, 각 간선을 양 끝 정점에 대응하는 점을 끝점으로 하는 평면 곡선에 대응시킨다. 모든 곡선은 끝점을 제외하고 서로 겹치지 않는다.

정점 nn개와 간선 mm개로 이루어진 무방향 평면 그래프가 주어진다. 정점은 1,2,…,n1, 2, \ldots, n으로 번호가 매겨져 있다. ii번째 간선은 정점 uiu_i와 viv_i를 잇고, 길이는 wiw_i이다.

질의 qq개가 주어진다. ii번째 질의에서는 정수 sis_i와 tit_i가 주어진다. 정점 sis_i에서 정점 tit_i까지 가는 경로 중 간선을 최대 3개만 사용하는 경로의 최단 길이를 구하라. 그런 경로가 없는지도 판단하라.

입력

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다 (2≤n≤1062 \leq n \leq 10^6, 1≤m≤1061 \leq m \leq 10^6).

이어지는 mm개 줄의 ii번째 줄에는 정수 uiu_i, viv_i, wiw_i가 주어진다 (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \neq v_i, 1≤wi≤1081 \leq w_i \leq 10^8). 두 정점을 잇는 간선은 최대 하나이다. 그래프는 평면 그래프임이 보장된다.

다음 줄에는 질의 수 qq가 주어진다 (1≤q≤1061 \leq q \leq 10^6).

이어지는 qq개 줄의 ii번째 줄에는 정수 sis_i와 tit_i가 주어진다 (1≤si,ti≤n1 \leq s_i, t_i \leq n, si≠tis_i \neq t_i).

출력

각 질의마다 간선을 최대 3개 사용하는 최단 경로의 길이를 한 줄에 출력한다. 그런 경로가 없으면 -1을 출력한다.

예제2

  1. 예제 1

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

    입력
    6 4
    1 2 1
    2 3 1
    3 4 1
    4 5 1
    3
    1 4
    1 5
    1 6
    
    예상 출력
    3
    -1
    -1