RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00626

깜빡이는 연결망

Diamond IV 다이아몬드 IV
난이도
5s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
2
제출 수
50.0%
정답률
레이팅

의견: 0

설명

\(N\)개의 정점과 시간에 따라 나타났다 사라지는 간선들로 이루어진 무방향 그래프가 있다. 처음에는 간선이 하나도 없다.

\(M\)개의 이벤트가 순서대로 주어진다. 각 이벤트는 다음 중 하나이다.

  1. 1 u v : 정점 \(u\)\(v\) 사이에 간선을 추가한다. (이 시점에 같은 간선은 존재하지 않음이 보장된다)

  2. 2 u v : 정점 \(u\)\(v\) 사이의 간선을 제거한다. (이 시점에 그 간선이 존재함이 보장된다)

  3. 3 u v : 현재 \(u\)\(v\)가 (직접 또는 간접으로) 연결되어 있으면 1, 아니면 0을 출력한다.

간선이 추가/삭제되므로 단순한 유니온 파인드만으로는 처리할 수 없다.

제약

\(1 \le N \le 100{,}000\)

\(1 \le M \le 120{,}000\)

\(1 \le u, v \le N\)

추가/제거되는 간선은 항상 \(u \ne v\)이다.

입력 형식

첫 줄에 두 정수 \(N\), \(M\)이 주어진다.

이어서 \(M\)개의 줄에 위 형식의 이벤트가 한 줄에 하나씩 주어진다.

출력 형식

각 3번 이벤트에 대해 연결 여부(\(1\) 또는 \(0\))를 한 줄에 하나씩 출력한다.

예제 1
입력
4 6
1 1 2
3 1 3
1 2 3
3 1 3
2 2 3
3 1 3
출력
0
1
0
설명

간선 1-2 추가 후 1과 3은 분리 -> 0. 간선 2-3 추가 후 1-2-3 연결 -> 1. 간선 2-3 제거 후 다시 분리 -> 0.

예제 2
입력
2 4
3 1 1
1 1 2
2 1 2
3 1 2
출력
1
0
설명

자기 자신과는 항상 연결 -> 1. 간선을 추가했다 바로 제거하면 1과 2는 분리 -> 0.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

깜빡이는 연결망

개요
출제자 난이도 Diamond IV 다이아몬드 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

깜빡이는 연결망

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8