만드는 중입니다

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

전화 요금제

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

요약
전화선이 추가되고 삭제되는 숲에서, 최근 t개의 질의 시점 중 하나라도 연결된 집 쌍의 수를 구합니다.
난이도

어려움10점 중 8점

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

문제

"Dormi's Fone Service"는 CCOland의 유일한 전화 서비스 제공자이다. CCOland에는 1번부터 NN번까지 번호가 매겨진 NN개의 집이 있다. 각 전화선은 서로 다른 두 집을 잇고, 지금까지 존재했던 모든 전화선은 숲(forest)을 이룬다.

전화선에는 결함이 있어서 각 전화선은 단 하나의 시간 구간 동안만 존재한다. 두 집은 특정 시각에 한 집에서 다른 집까지 이어지는 전화선 경로가 있으면 그 시각에 서로 통화할 수 있다.

QQ개의 질의를 처리해야 한다.

  • 1 x y: 집 x와 y 사이에 전화선을 추가한다. 집 x와 y 사이에 전화선을 이전에 추가한 적이 없음이 보장된다.
  • 2 x y: 집 x와 y 사이의 전화선을 제거한다. 현재 집 x와 y 사이에 전화선이 존재함이 보장된다.
  • 3 t: 현재 질의부터 t개 전 질의까지의 구간 중 어느 한 시점에 서로 통화할 수 있는 서로 다른 집 쌍의 수를 구한다. GqG_q를 q번째 질의 후 CCOland의 상태, G0G_0를 어떤 질의도 적용하기 전의 상태라 하자. 이번 질의가 s번째 질의라면 Gs−t,Gs−t+1,…,GsG_{s-t}, G_{s-t+1}, \dots, G_s 중 적어도 하나에서 연결된 집 쌍의 수를 센다.

입력

첫 줄에는 EE (E∈{0,1}E \in \{0, 1\})가 주어진다. E=0E = 0이면 입력이 암호화되지 않은 것이고, E=1E = 1이면 암호화된 것이다. 둘째 줄에는 집의 수 NN과 질의의 수 QQ가 공백으로 구분되어 주어진다. 이어서 QQ개의 줄에 질의가 주어지며, 암호화 여부는 EE에 따른다.

qq번째 질의(1≤q≤N1 \le q \le N)에 대해 (복호화한 뒤) 1번과 2번 질의는 1≤x,y≤N1 \le x, y \le N이고, 3번 질의는 0≤t≤q0 \le t \le q가 보장된다.

암호화된 경우 인자 xx, yy, tt는 실제 값과 가장 최근 3번 질의의 답을 비트 XOR한 값으로 주어진다. 아직 3번 질의가 없었다면 인자는 그대로이다.

출력

각 3번 질의마다 답을 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    1
    4 12
    3 0
    1 1 2
    3 0
    1 0 2
    3 1
    3 6
    2 1 2
    3 3
    3 9
    1 2 7
    3 3
    3 8
    
    예상 출력
    0
    1
    3
    3
    1
    3
    3
    5