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

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

뱃길 여행

면접 대비

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

요약
간선이 추가되는 상황에서 두 섬 사이의 최단 경로를 묻는 질의를 순서대로 처리하는 문제입니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 동적 계획법, 시뮬레이션
정답자
아직 제출이 없습니다

문제

JOI 나라에는 nn개의 섬이 있고, 각 섬에는 11부터 nn까지의 번호가 붙어 있다. 현재 JOI 나라에서는 섬과 섬을 잇는 항로망 정비가 진행되고 있다.

당신은 배편 승선권을 취급하는 매표소에서 일하고 있다. JOI 나라에는 배를 이용해 되도록 저렴하게 섬과 섬 사이를 오가고 싶어 하는 사람이 많으며, 그들은 출발지와 목적지를 적은 주문표를 당신에게 보내온다.

당신의 일은, 손님에게서 주문표를 받는 즉시 여러 배편을 갈아타 가며 출발지와 목적지를 잇는 항로 중 가장 저렴한 운임을 계산하여 손님에게 알려 주는 것이다.

다만 여정에 따라서는 배로 이동할 수 없는 경우도 있다. 그럴 때에는 이동이 불가능하다는 뜻으로 −1-1을 답해야 한다. 또한 JOI 나라에서는 섬과 섬을 잇는 새로운 배편이 잇따라 운항을 시작하며, 그 정보가 그때그때 당신에게 전달된다. 손님에게 답할 때에는 항상 가장 최신 정보를 반영해야 한다.

손님의 주문표와 새로 운항을 시작한 배편의 정보가 입력으로 주어질 때, 각 주문표에 대한 답을 구하는 프로그램을 작성하여라.

입력

입력의 첫째 줄에는 두 정수 nn, kk (1≤n≤1001 \le n \le 100, 1≤k≤50001 \le k \le 5000)가 주어진다. 섬의 수가 nn개이고, 이어서 kk개의 명령 줄이 주어진다는 뜻이다.

다음 kk개의 줄에는 각각 정수 33개 또는 44개가 공백으로 구분되어 주어진다.

  • 첫 번째 수가 00이면 이 줄은 손님의 주문표를 나타낸다.
    • 이 줄에는 세 정수 00, aa, bb (1≤a≤n1 \le a \le n, 1≤b≤n1 \le b \le n, a≠ba \ne b)가 주어진다.
    • 손님이 섬 aa를 출발지로, 섬 bb를 목적지로 하는 주문표를 보냈음을 뜻한다.
  • 첫 번째 수가 11이면 이 줄은 새로 운항을 시작한 배편 정보를 나타낸다.
    • 이 줄에는 네 정수 11, cc, dd, ee (1≤c≤n1 \le c \le n, 1≤d≤n1 \le d \le n, c≠dc \ne d, 1≤e≤10000001 \le e \le 1000000)가 주어진다.
    • 섬 cc와 섬 dd를 왕복하는 배편이 새로 운항을 시작했으며, 섬 cc에서 섬 dd로 가는 운임과 섬 dd에서 섬 cc로 가는 운임이 모두 ee임을 뜻한다.
    • 이 줄 이후의 주문표에 대해서는 이 배편도 고려하여 답해야 한다.

처음에는 어떤 배편도 운항하고 있지 않다. 입력에서 배편 정보를 나타내는 줄은 10001000개 이하이다. 또한 같은 두 섬 사이에 여러 배편이 운항할 수 있음에 유의하여라.

출력

입력에서 주문표를 나타내는 줄의 수를 mm이라고 하자.

출력은 mm개의 줄로 이루어지며, ii번째 줄 (1≤i≤m1 \le i \le m)에는 ii번째 주문표에 대한 답을 정수로 출력한다.

즉, ii번째 주문표의 출발지에서 목적지까지 여러 배편을 갈아타 이동할 수 있으면 그 운임 합의 최솟값을 출력하고, 이동이 불가능하면 −1-1을 출력한다.

설명

아래 그림은 첫 번째 입력에서 배편이 차례로 운항을 시작하는 모습과 각 주문표에 대한 답을 그림으로 나타낸 것이다.

예제4

  1. 예제 1

    입력
    3 8
    1 3 1 10
    0 2 3
    1 2 3 20
    1 1 2 5
    0 3 2
    1 1 3 7
    1 2 1 9
    0 2 3
    
    예상 출력
    -1
    15
    12
    
  2. 예제 2

    입력
    5 16
    1 1 2 343750
    1 1 3 3343
    1 1 4 347392
    1 1 5 5497
    1 2 3 123394
    1 2 4 545492
    1 2 5 458
    1 3 4 343983
    1 3 5 843468
    1 4 5 15934
    0 2 1
    0 4 1
    0 3 2
    0 4 2
    0 4 3
    0 5 3
    
    예상 출력
    5955
    21431
    9298
    16392
    24774
    8840
    
  3. 예제 3

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

    입력
    4 6
    1 1 2 5
    1 2 3 5
    1 3 4 5
    0 1 4
    0 4 1
    0 1 3
    
    예상 출력
    15
    15
    10