만드는 중입니다

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

올림피아드 가는 길

시간 제한2초메모리 제한1024 MB

요약
항공편을 추가하고 삭제하는 그래프에서 두 도시 사이를 최대 2개의 항공편으로 이동하는 최소 비용을 구합니다.
난이도

어려움10점 중 8점

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

문제

미샤는 선발 단계 문제를 모두 풀어서 비공개 정보 올림피아드의 현장 단계 초대를 받았다. 그는 항공편으로 대회장에 가려고 하며, 환승은 최대 한 번까지만 하고 싶다. 즉 이용하는 항공편은 최대 두 편이다. 이런 경로 중에서 가장 저렴한 것을 찾고 싶어 한다.

심사위원회는 현장 단계의 장소와 날짜를 철저히 비밀로 한다. 그래서 미샤는 어느 도시에서 출발할지 미리 알 수 없다. 또한 새로운 정기편이 생기기도 하고, 기존 정기편이 시간표에서 빠지기도 한다. 미샤를 위해 다음 질의에 답하는 프로그램을 작성하라.

  1. 새로운 정기편을 추가한다.
  2. 정기편 하나를 삭제한다.
  3. 두 도시 사이의 최소 비용을 구한다. 환승이 없는 경로와 환승이 한 번 있는 경로만 고려한다.

각 정기편은 도시 uiu_i와 viv_i를 잇고, 비용은 cic_i이다. 모든 정기편은 양방향이어서 어느 방향으로든 이용할 수 있다.

입력

첫 줄에 정수 nn과 mm (2≤n≤100 0002 \leq n \leq 100\,000, 0≤m≤100 0000 \leq m \leq 100\,000)이 주어진다. 각각 도시의 수와 처음에 이용 가능한 정기편의 수이다.

이어지는 mm개의 줄에는 정수 uiu_i, viv_i, cic_i (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \ne v_i, 0≤ci≤1090 \leq c_i \leq 10^9)가 주어진다. ii번째 정기편이 잇는 도시와 그 비용이다.

다음 줄에는 정수 qq (1≤q≤100 0001 \leq q \leq 100\,000)가 주어진다. 질의의 개수이다.

이어지는 qq개의 줄은 다음 세 형식 중 하나로 질의를 나타낸다.

  • 1 ui vi ci1\ u_i\ v_i\ c_i (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \ne v_i, 0≤ci≤1090 \leq c_i \leq 10^9)는 도시 uiu_i와 viv_i 사이에 비용 cic_i인 정기편을 추가한다는 뜻이다.
  • 2 ui vi2\ u_i\ v_i (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \ne v_i)는 도시 uiu_i와 viv_i 사이의 정기편을 취소한다는 뜻이다. 이 질의가 들어오는 시점에 두 도시가 정기편으로 연결되어 있음이 보장된다.
  • 3 ui vi3\ u_i\ v_i (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \ne v_i)는 도시 uiu_i에서 도시 viv_i까지 환승을 최대 한 번 사용해서 가장 저렴하게 가는 방법을 묻는다.

어느 시점에든 두 도시 사이의 정기편은 최대 하나이다. 세 번째 형식의 질의가 적어도 하나 있음이 보장된다.

출력

세 번째 형식의 각 질의에 대해, 환승을 최대 한 번 사용한 여행의 최소 비용을 출력한다. 주어진 두 도시 사이에 적절한 경로가 없으면 −1-1을 출력한다.

힌트

예시의 세 번째 형식 질의에 대한 최적 경로를 입력 순서대로 나열하면 다음과 같다.

  1. 도시 2를 거친다. 직항편도 있지만 가장 저렴한 경로는 아니다.
  2. 도시 3을 거친다.
  3. 도시 2를 거친다.
  4. 도시 3을 거친다.
  5. 적절한 경로가 없다.
  6. 직항편이다.
  7. 도시 1을 거친다.
  8. 도시 4를 거친다.
  9. 적절한 경로가 없다.

예제1

  1. 예제 1

    입력
    5 6
    1 2 3
    1 3 8
    2 3 4
    2 4 7
    3 4 1
    4 5 7
    13
    3 1 3
    3 1 4
    2 1 3
    3 1 4
    1 1 3 0
    3 1 4
    3 1 5
    3 3 4
    1 1 4 1
    3 2 4
    3 2 5
    2 4 5
    3 2 5
    
    예상 출력
    7
    9
    10
    1
    -1
    1
    4
    14
    -1