만드는 중입니다

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

동적 연결성과 쿼리

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

요약
각 질의는 두 정점 사이의 간선을 있으면 제거하고 없으면 추가합니다. 두 정점이 같은 연결 요소에 속하는지도 묻으며, 입력은 직전 연결 요소 수로 복호화합니다.
난이도

어려움10점 중 9점

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

문제

NN개의 정점으로 이루어진 그래프가 있을 때 다음 쿼리를 처리하는 프로그램을 작성하시오.

  1. x y: xx와 yy 사이에 간선이 있으면 제거하고, 없으면 추가한다. (0≤x<y<N0 \le x < y < N)
  2. x y: xx와 yy가 같은 연결 요소에 속하는지 구하여 출력한다. (0≤y<x<N0 \le y < x < N)

입력

첫째 줄에 정점의 개수 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (2≤N,Q≤1052 \le N, Q \le 10^5)

둘째 줄부터 QQ개의 줄에 걸쳐 두 정수 aa, bb가 주어진다. (0≤a,b<2630 \le a, b < 2^{63}, a≠ba \ne b)

x=(a⊕F) mod Nx = (a \oplus F) \bmod N, y=(b⊕F) mod Ny = (b \oplus F) \bmod N이다. FF는 처음에 0이며, 각 쿼리를 실행한 직후의 연결 요소 개수가 FF에 더해진다.

출력

2번 쿼리의 결과를 한 줄에 하나씩 출력한다. 두 정점이 같은 연결 요소에 속하면 1, 아니면 0을 출력한다.

예제1

  1. 예제 1

    입력
    5 5
    1 2
    5 7
    5 6
    14 15
    6 7
    
    예상 출력
    1
    0
    0