#810
Ruby I
동적 연결성과 쿼리 (Hard)
시간 제한
2s
메모리 제한
1024MB
제출
2
정답
1
맞힌 사람
1
정답 비율
50.0%

문제

Easy 버전과 Hard 버전의 차이는 쿼리의 암호화 여부 차이다.

NN개의 정점으로 이루어진 그래프가 주어진다. 각 정점에는 11부터 NN까지 번호가 매겨져 있고, 초기에는 각 정점 사이에 간선이 없다. 이때 다음 쿼리를 수행하는 프로그램을 작성해 보자.

  • 1 u v: uu번 정점과 vv번 정점 사이에 간선이 없으면 간선을 추가하고, 있으면 제거한다.
  • 2 u v: uu번 정점과 vv번 정점 사이에 경로가 존재하면 1을 출력하고, 없으면 0을 출력한다.

입력

첫째 줄에 NN과 쿼리의 개수 QQ가 주어진다. (2N,Q1000002\le N, Q\le 100\,000)

둘째 줄부터 QQ개의 줄에 걸쳐 쿼리 복원에 필요한 세 정수 aa, bb, cc가 주어진다. (0a,b,c26310 \le a, b, c \le 2^{63}-1)

쿼리는 다음과 같이 복원한다.

  • 쿼리 종류 =(aX)mod2+1=(a\oplus X) \mod 2 + 1
  • u=(bX)modN+1u=(b\oplus X) \mod N + 1
  • v=(cX)modN+1v=(c\oplus X)\mod N + 1

단, \oplus는 Bitwise-XOR 연산이다. XX는 초기에는 00이며, 매 쿼리 수행 이후 uu번 정점이 속한 연결 요소의 크기가 더해진다. uvu \neq v임이 보장된다.

출력

2번 쿼리의 답을 한 줄에 하나씩 출력한다.

예제 입력 1

3 8
1 2 1
0 1 0
2 2 0
4 6 5
7 7 5
9 8 10
9 11 9
13 13 14

예제 출력 1

0
0
0
1

힌트

예제 입력 1의 복원된 쿼리는 순서대로 다음과 같다.

2 3 2
2 1 2
1 1 3
1 3 2
1 1 3
2 1 3
1 3 1
2 2 3
문제를 만든 사람
조서현
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
#순위사용자언어시간메모리코드 길이
5567🥇
조서현
C#801ms552580KB23198B
난이도 투표
Ruby I1명 투표· 약 1개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
5567
맞았습니다
C#801ms552580KB23198B2026. 04. 23. 10:45
5566
틀렸습니다
C#--23251B2026. 04. 23. 10:45