아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

다중 간선

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

요약
간선을 추가하거나 제거하는 질의가 온라인 상호작용 방식으로 주어지며, 질의마다 연결 요소의 개수를 출력합니다.
난이도

어려움10점 중 9점

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

문제

이것은 인터랙티브 문제다.

처음에는 간선이 없는 상태에서 nn개의 정점과 qq개의 쿼리가 주어진다. 정점은 1부터 nn까지 번호가 매겨져 있다. 각 쿼리는 다음 두 종류 중 하나다.

  • 1 a b: 정점 aa와 정점 bb를 잇는 무방향 간선을 추가한다. 이 쿼리를 처리할 때 간선 aa - bb는 존재하지 않음이 보장된다.
  • 2 a b: 정점 aa와 정점 bb를 잇는 간선을 끊는다. 이 쿼리를 처리할 때 간선 aa - bb는 존재함이 보장된다.

각 쿼리를 처리한 뒤, 그래프의 연결 요소 개수를 출력한다.

입력

첫 줄에 nn과 qq가 주어진다. 두 값은 2≤n≤1062 \le n \le 10^6, 1≤q≤1061 \le q \le 10^6을 만족한다. 이 줄 다음부터 인터랙션이 시작된다.

인터랙션 프로토콜

쿼리는 한 줄에 하나씩, 총 qq줄을 읽는다. 쿼리는 순서대로 주어지며, ii번째 쿼리는 적어도 i−1i-1개의 쿼리에 대한 답을 출력한 뒤에야 주어진다. 각 답을 출력한 뒤에는 아래 방법으로 출력 스트림을 비운다.

  • C: fflush(stdout);
  • C++: std::cout << std::flush;
  • Java: System.out.flush();
  • Python: sys.stdout.flush()

다른 언어는 해당 언어의 공식 문서를 참고한다.

힌트

각 쿼리를 처리한 후 그래프에는 자기 루프나 다중 간선이 없다는 것이 보장된다.

예제1

  1. 예제 1

    입력
    2 2
    1 1 2
    2 2 1
    
    예상 출력
    1
    2