만드는 중입니다

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

Gridev의 프로토콜

시간 제한2초메모리 제한512 MB

요약
N×N 격자에 오류 M개가 있을 때, 오류가 K개 이하인 행이나 열을 지우는 작업을 최소 몇 번 해야 모든 오류를 없앨 수 있는지 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 그리디
정답자
아직 제출이 없습니다

문제

성준이는 무슨 문제든 척척 풀어내는 훌륭한 로봇이다. 이를 시샘한 근수는 성준이가 자는 동안 그의 회로판을 망가뜨렸다.

다행히 성준이에게는 자가 치유 프로토콜이 있어, 이를 이용해 스스로를 고치려고 한다. 성준이의 회로판은 N×NN \times N 격자판이며, 현재 MM개의 좌표 (xi,yi)(x_i, y_i)에 오류가 있다. 성준이는 다음 두 가지 행동을 반복할 수 있다.

  1. 오류가 KK개 이하인 모든 가로줄에서, 그 줄에 있는 오류를 전부 제거한다. 오류가 KK개를 넘는 가로줄의 상태는 바뀌지 않는다.
  2. 오류가 KK개 이하인 모든 세로줄에서, 그 줄에 있는 오류를 전부 제거한다. 오류가 KK개를 넘는 세로줄의 상태는 바뀌지 않는다.

성준이는 모든 오류를 제거해 빨리 치유하고, 자신을 망가뜨린 근수에게 복수하고 싶어 한다. 최소한의 행동으로 모든 오류를 제거하는 방법을 구해보자.

입력

첫째 줄에 회로판의 크기 NN, 오류의 개수 MM, 한 줄에서 치유할 수 있는 오류의 최대 개수 KK가 공백으로 구분되어 주어진다. (1≤N,M,K≤2×1051 \le N, M, K \le 2\times10^5)

둘째 줄부터 M+1M+1번째 줄까지 오류의 위치 (xi,yi)(x_i, y_i)가 공백으로 구분되어 주어진다. (1≤xi,yi≤N1 \le x_i, y_i \le N)

오류의 위치는 중복되어 주어지지 않는다.

출력

성준이가 모든 오류를 제거하는 데 필요한 최소 행동 수를 출력한다. 어떤 방법으로도 모든 오류를 제거할 수 없다면 -1을 출력한다.

예제3

  1. 예제 1

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

    입력
    2 4 1
    1 1
    2 1
    1 2
    2 2
    
    예상 출력
    -1
    
  3. 예제 3

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