만드는 중입니다

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

물 뿌리기

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

요약
높이가 주어진 N×N 격자에서 시작 칸의 물이 같은 높이 이웃과 낮은 이웃으로 퍼질 때, 물을 받는 칸의 개수를 구합니다.
난이도

보통10점 중 7점

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

문제

대학원생인 당신은 현재 N×NN \times N 격자 부지에서 물의 흐름을 연구하고 있다. 목표는 높이가 주어진 N2N^2개의 칸 중 물이 닿는 칸이 몇 개인지 알아내는 것이다. 수년간의 연구 끝에 물이 다음 규칙에 따라 확산한다는 것을 알아냈다.

  • 각 칸의 물 상태는 0,1,2,⋯ ,X0, 1, 2, \cdots, X의 (X+1)(X+1)개 정수 중 하나이다. 00은 물이 없는 상태이고, 1,⋯ ,X1, \cdots, X는 물이 있는 상태이다.
  • 처음 물을 뿌린 칸의 물 상태는 XX이다.
  • 칸 (x,y)(x,y)에서 인접한 칸으로 물이 확산해도 (x,y)(x,y)의 물 상태는 바뀌지 않는다.
  • 11보다 큰 정수 ll에 대하여, 물 상태가 ll인 칸의 물은 다음 규칙에 따라 확산한다.
    • 매초, 현재 칸과 높이가 같은 인접 칸으로 물이 확산한다. 확산한 물의 상태는 (l−1)(l-1)이다. 단, 상태가 (l−1)(l-1) 이상인 칸으로는 물이 확산하지 않는다.
    • 매초, 현재 칸보다 높이가 낮은 인접 칸으로 물이 확산한다. 확산한 물의 상태는 XX이다.
  • 한 칸에서 물이 여러 번 확산할 수 있다. 모든 칸에서 확산은 동시에 일어난다.
  • 여러 칸에서 한 칸으로 동시에 물이 확산하면, 그 칸의 물 상태는 확산한 물 상태 중 최댓값이다.
  • 칸 (x,y)(x,y)의 물 상태가 00이고 어떤 칸에서도 (x,y)(x,y)로 물이 확산하지 않으면, (x,y)(x,y)의 물 상태는 00이다.

두 칸 (a,b)(a,b)와 (x,y)(x,y)가 서로 인접한다는 것은 ∣a−x∣+∣b−y∣=1|a-x|+|b-y| = 1임을 뜻한다. (i,j)(i,j)는 ii행 jj열을 가리킨다. N×NN \times N 격자의 각 칸 높이와 물을 처음 뿌린 위치가 주어질 때, 물이 더 이상 확산하지 않을 만큼 충분히 시간이 지난 뒤 물이 있는 칸, 즉 물 상태가 1,⋯ ,X1, \cdots, X인 칸의 수를 구하시오.

입력

첫 줄에 네 정수 NN, XX, xx, yy가 공백으로 구분되어 주어진다. (1≤N≤2 0001 \le N \le 2\,000, 1≤X≤2N1 \le X \le 2N, 1≤x,y≤N1 \le x, y \le N)

NN은 격자의 한 변 길이, XX는 처음 뿌려진 물의 상태, (x,y)(x,y)는 처음 물을 뿌린 위치이다.

두 번째 줄부터 NN개의 줄에 격자 부지가 주어진다. ii번째 줄의 jj번째 정수 hijh_{ij}는 (i,j)(i,j)의 높이이다. (0≤hij≤100 0000 \le h_{ij} \le 100\,000)

출력

물이 더 이상 확산하지 않을 만큼 충분히 시간이 지난 뒤, 물이 있는 칸(물 상태가 1,⋯ ,X1, \cdots, X인 칸)의 수를 첫 줄에 출력한다.

예제1

  1. 예제 1

    입력
    8 3 6 3
    6 6 9 9 9 9 9 3
    6 6 6 9 9 9 3 3
    6 6 6 9 9 9 3 3
    7 7 7 9 9 2 3 3
    7 7 7 7 7 2 3 3
    8 8 8 8 7 4 3 3
    6 0 0 4 4 4 3 3
    6 6 6 6 4 4 4 3
    
    예상 출력
    38