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

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

꽃밭 물주기

시간 제한1초메모리 제한256 MB

요약
같은 행이나 열을 따라 번지는 물로 모든 꽃에 물을 주는 스프링클러 최소 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

꽃밭은 10610^6행 10610^6열짜리 정사각형 격자다. 꽃은 모두 NN송이 있고, ii번째 꽃은 rir_i행 cic_i열에 있다.

당신은 이 꽃밭에 스프링클러를 놓는다. 스프링클러는 꽃이 없는 빈 칸이면 어디에나 놓을 수 있고, 놓인 칸에서 위, 오른쪽, 아래, 왼쪽 네 방향으로 격자와 나란하게 물줄기를 뿜는다.

꽃에는 특별한 성질이 있다. 어느 방향에서든 물을 받은 꽃은 자기 칸에서 다시 위, 오른쪽, 아래, 왼쪽 네 방향으로 물을 뿜는다. 세로 물줄기와 가로 물줄기는 높이가 달라서 부딪히지 않고 서로를 지나간다. 물줄기는 격자 끝까지 뻗으며 꽃도 다른 물줄기도 물줄기를 막지 못한다.

꽃 NN송이에 모두 물을 주려면 스프링클러가 최소 몇 대 필요한지 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다 (1≤T≤201 \le T \le 20). 각 테스트 케이스는 다음과 같이 주어진다.

  1. 첫 줄에 꽃의 수 NN (1≤N≤1000001 \le N \le 100000)
  2. 이어지는 NN개 줄에 각 꽃의 행과 열 rir_i, cic_i (1≤ri,ci≤10000001 \le r_i, c_i \le 1000000). 같은 칸에 꽃이 두 송이 이상 놓이는 경우는 없다.

출력

각 테스트 케이스마다 모든 꽃에 물을 줄 수 있는 스프링클러의 최소 개수를 한 줄에 출력한다.

힌트

아래 두 그림은 스프링클러를 최소 개수로 놓은 예다.

첫 번째 예제 테스트 케이스의 배치

첫 번째 예제 테스트 케이스

두 번째 예제 테스트 케이스의 배치

두 번째 예제 테스트 케이스

예제3

  1. 예제 1

    입력
    2
    4
    1 2
    2 1
    2 3
    3 2
    9
    2 1
    1 2
    2 3
    2 5
    1 6
    2 7
    4 3
    5 4
    4 5
    
    예상 출력
    1
    2
    
  2. 예제 2

    입력
    1
    1
    1 1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3
    2
    5 1
    5 9
    2
    1 5
    9 5
    2
    1 1
    2 2
    
    예상 출력
    1
    1
    1