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

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

산악 통로 찾기

면접 대비

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

요약
n x n 격자에서 한 걸음에 높이 차가 2 이하가 되도록 이동하며 시작 높이보다 높은 칸을 밟는 걸음 수를 최소로 하는 경로를 찾는다.
난이도

보통10점 중 6점

유형
그래프, 최단 경로, 힙, DFS
정답자
아직 제출이 없습니다

문제

등산가 Alp은 정사각형 모양의 산악 지대에서 북서쪽 모서리에 서 있으며, 반대편인 남동쪽 모서리로 가는 통로를 찾으려고 합니다.

Alp은 지금 산소가 필요 없는 고도에 있습니다. 하지만 이 출발 고도보다 조금이라도 더 높은 고도에서는 산소가 필요합니다. 산소가 필요한 경우, 가로 방향으로 한 걸음 이동할 때마다 산소 1단위를 소모합니다.

북서쪽 모서리는 위치 (1,1)(1, 1), 남동쪽 모서리는 위치 (n,n)(n, n)입니다. 1≤x,y≤n1 \le x, y \le n인 각 지점 (x,y)(x, y)의 고도는 정수입니다.

Alp은 가로 방향의 걸음을 이어서 이동합니다. 한 걸음은 북, 남, 동, 서 중 한 방향으로 한 칸 이동하는 것입니다. Alp은 정사각형 영역을 벗어날 수 없으며, 한 걸음에 고도를 22단위보다 많이 오르거나 내려갈 수 없습니다. 한 걸음의 출발 지점 또는 도착 지점의 고도가 산소를 필요로 한다면, Alp은 그 걸음에서 산소 1단위를 소모합니다.

(1,1)(1, 1)에서 (n,n)(n, n)까지 이동할 때 Alp이 소모해야 하는 산소의 최소 단위 수를 구하세요. 그러한 통로가 존재하지 않으면 존재하지 않는다고 출력하세요.

입력

첫째 줄에는 Alp이 이동해야 하는 여행의 수를 나타내는 양의 정수 TT가 주어집니다.

각 여행은 다음과 같이 주어집니다. 여행의 첫째 줄에는 정사각형 지대의 한 변의 길이를 나타내는 정수 nn (1≤n≤251 \le n \le 25)이 주어집니다. 이어지는 n2n^2개의 줄에는 각각 한 지점의 고도를 나타내는 정수가 하나씩 주어집니다. 고도는 다음 순서로 나열됩니다:

(1,1),(1,2),(1,3),…,(1,n),(2,1),(2,2),…,(n,1),(n,2),…,(n,n)(1, 1), (1, 2), (1, 3), \dots, (1, n), (2, 1), (2, 2), \dots, (n, 1), (n, 2), \dots, (n, n).

출력

각 여행마다 한 줄을 출력합니다.

통로가 존재하면 소모되는 산소의 최소 단위 수를 출력합니다. 통로가 존재하지 않으면 CANNOT MAKE THE TRIP 메시지를 출력합니다.

연속한 여행의 출력 줄 사이에는 빈 줄 하나를 넣어 구분합니다.

예제5

  1. 예제 1

    입력
    2
    5
    5
    4
    3
    2
    1
    7
    5
    6
    6
    6
    8
    8
    8
    9
    6
    9
    6
    9
    9
    6
    4
    5
    4
    5
    3
    2
    4
    9
    9
    4
    
    예상 출력
    5
    
    CANNOT MAKE THE TRIP
    
  2. 예제 2

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

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

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

    입력
    1
    2
    0
    5
    5
    0
    
    예상 출력
    CANNOT MAKE THE TRIP