정상

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

요약
높이 차가 d 이하인 셀만 지나갈 수 있다는 제약에서 더 높은 곳에 도달할 수 없는 d-피크 셀의 개수를 여러 테스트케이스에 대해 구하는 문제입니다.
난이도

어려움10점 중 8점

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

문제

상근이는 큰 지도를 만드는 회사에서 일한다. 이번에 맡은 일은 풍경 속에서 산의 정상을 찾는 것이다.

각 칸마다 높이가 적힌 격자 지도가 주어진다. 어떤 칸의 높이를 hh라고 하자. 이 칸에서 출발해 상하좌우로 인접한 칸을 따라 이동하되, 높이가 h−dh-d 이하인 칸은 절대 밟지 않는다고 하자. 이 규칙을 지키면서 자신보다 더 높은 칸(높이가 hh보다 큰 칸)에 도달하는 것이 불가능하면, 그 칸을 dd-정상이라고 부른다. 다시 말해 높이가 h−dh-d보다 큰 칸들만 이용해서는 자기보다 높은 칸으로 갈 수 없는 칸이 바로 dd-정상이다.

예를 들어 어떤 정상보다 조금 낮은 칸이라도, 낮은 땅으로 내려가지 않고 곧장 더 높은 정상으로 이어져 있다면 그 칸은 정상이 아니다. 반대로 더 높은 곳으로 가려면 반드시 충분히 낮은 곳(높이 h−dh-d 이하)을 거쳐야만 한다면 그 칸은 dd-정상이다.

각 칸의 높이가 주어졌을 때, dd-정상인 칸의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤1001 \le T \le 100)

각 테스트 케이스의 첫째 줄에는 지도의 세로 크기 nn, 가로 크기 mm, 정수 dd가 주어진다. (1≤n,m≤5001 \le n, m \le 500, 1≤d≤1091 \le d \le 10^9) 이어지는 nn개의 줄에는 각 줄마다 mm개의 정수가 주어지며, 이는 각 칸의 높이 hh이다. (0≤h≤1090 \le h \le 10^9)

출력

각 테스트 케이스마다 dd-정상인 칸의 개수를 한 줄에 하나씩 출력한다.

예제7

  1. 예제 1

    입력
    1
    6 10 2
    0 0 0 0 0 0 0 0 0 0
    0 1 2 1 1 1 1 0 1 0
    0 2 1 2 1 3 1 0 0 0
    0 1 2 1 3 3 1 1 0 0
    0 2 1 2 1 1 1 0 2 0
    0 0 0 0 0 0 0 0 0 0
    
    예상 출력
    4
    
  2. 예제 2

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

    입력
    1
    1 1 1
    7
    
    예상 출력
    1
    
  4. 예제 4

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

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

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

    입력
    2
    2 3 1000000000
    7 1 7
    1 1 1
    1 1 5
    5
    
    예상 출력
    2
    1