충무공 이순신

시간 제한1.216초메모리 제한512 MB

요약
1번 지역과의 연결 상태에 따라 지역들의 편의 값이 바뀌는 국도(합집합-찾기)와 사이클이 없는 고속도로(동적 트리) 네트워크를 실시간으로 갱신하며 경로 합 질의를 처리합니다.
난이도

어려움10점 중 9점

유형
유니온 파인드, 트리, 그래프, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

지역은 1번부터 n번까지 번호가 붙어 있고, 거북선을 만들 공방은 1번 지역에 있다. 각 지역 i에는 그 지역까지 가기 어려운 정도 hard_i가 있다.

도로에는 국도와 고속도로가 있다. 처음 주어지는 m개의 도로는 모두 국도이다. 국도로 연결된 같은 연결 요소 안의 지역들은 서로 국도만으로 이동할 수 있다.

현재 국도 연결 요소 중 1번 지역이 속한 연결 요소에 있는 지역은 더 이상 힘든 지역이 아니며, 각 지역의 hard_i가 그 지역의 편한 정도가 된다. 1번 지역에서 고속도로만 사용해 도달할 수 있는 지역은 편한 정도가 2 * hard_i가 된다. 1번 지역의 국도 연결 요소에 속하지 않는 지역은 편한 정도가 0으로 계산된다.

고속도로는 항상 전체 고속도로 그래프가 사이클을 만들지 않도록 관리되어야 한다. 또한 두 지역을 고속도로로 직접 잇기 위해서는, 두 지역 사이에 현재 국도만으로 이동할 수 있는 경로가 있어야 한다.

q개의 작업이 차례대로 주어진다. 국도 추가, 고속도로 추가와 철거, 그리고 현재 상태에 대한 질의 결과를 처리하라.

입력

첫째 줄에 지역의 수 n과 처음 국도의 수 m이 공백으로 구분되어 주어진다. (1 <= n, m <= 121600)

둘째 줄에 hard_1, hard_2, ..., hard_n이 공백으로 구분되어 주어진다. (1 <= hard_i <= 1216)

다음 m개의 줄에는 국도 하나를 나타내는 두 정수 a, b가 공백으로 구분되어 주어진다. (1 <= a, b <= n, a != b)

그다음 줄에 작업의 수 q가 주어진다. (1 <= q <= 121600)

다음 q개의 줄에는 작업을 나타내는 세 정수 p, a, b가 공백으로 구분되어 주어진다. (1 <= p <= 6, 1 <= a, b <= n, a != b)

각 작업의 의미는 다음과 같다.

  • p = 1: a 지역과 b 지역을 국도로 잇는다.
  • p = 2: a 지역과 b 지역을 고속도로로 잇는다. 두 지역 사이에 국도 경로가 없거나, 이 고속도로를 추가하면 고속도로 사이클이 생기는 경우에는 -1을 출력하고 추가하지 않는다.
  • p = 3: a 지역과 b 지역을 직접 잇는 고속도로를 철거한다. 그런 고속도로가 없으면 -1을 출력한다.
  • p = 4: 현재 힘든 상태로 남아 있는 모든 지역의 hard 값 합을 출력한다. 이 작업에서 a와 b는 형식을 맞추기 위해 주어진다.
  • p = 5: a 지역과 b 지역의 편한 정도의 합을 출력한다.
  • p = 6: a 지역에서 b 지역까지 고속도로만으로 가는 경로 위의 모든 지역의 편한 정도 합을 출력한다. 그런 고속도로 경로가 없으면 -1을 출력한다.

모든 작업은 입력 순서대로 하나씩 처리된다.

출력

출력이 필요한 작업마다 정답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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