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

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

시니컬한 개구리

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

요약
N x M 격자에서 각 칸은 정해진 거리만큼 한 방향으로 점프를 강제한다. 자유 점프를 최대 한 번 쓸 수 있을 때 집까지의 최소 점프 횟수를 구한다.
난이도

보통10점 중 6점

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

문제

개구리는 N×MN \times M 격자 모양의 청정한 서식지에 살고 있다. 가장 왼쪽 위 칸의 좌표는 (1,1)(1,1)이고 가장 오른쪽 아래 칸의 좌표는 (N,M)(N,M)이다. 각 격자 칸에는 개구리밥이 있는데, 개구리는 자신이 위치한 칸에 있는 개구리밥을 먹고 힘을 내서 격자 칸 사이를 점프할 수 있다. 격자 칸 (i,j)(i,j)에 있는 개구리밥을 먹으면 해당 칸에서 상하좌우 중 한 방향으로 정확히 a_i,ja\_{i,j}칸 점프한다. 단, 서식지 밖으로는 점프할 수 없다.

왠지 오늘 기분이 시니컬해진 개구리는 어서 집에 가서 쉬고 싶다. 그래서 오늘만큼은 최대 한 번 개구리밥을 무시하고 점프하기로 했다. 개구리밥을 무시하고 점프할 때는 상하좌우 중 한 방향으로 서식지 내에서 원하는 칸만큼 점프할 수 있다.

청정한 서식지의 정보와 개구리의 위치와 개구리 집의 위치가 주어졌을 때, 개구리가 집에 가기 위한 최소 점프 횟수를 구해주자.

입력

첫 번째 줄에 NN, MM이 주어진다. (1≤N,M≤1,0001 \le N, M \le 1\\,000)

두 번째 줄에 r_fr\_f, c_fc\_f, r_hr\_h, c_hc\_h가 주어진다. 개구리의 위치는 (r_f,c_f)(r\_f,c\_f)이고 개구리 집의 위치는 (r_h,c_h)(r\_h,c\_h)라는 뜻이다. (1≤r_f,r_h≤N1 \le r\_f, r\_h \le N, 1≤c_f,c_h≤M1 \le c\_f, c\_h \le M)

세 번째 줄부터 NN개의 줄에 걸쳐 a_i,ja\_{i,j}가 주어진다. (1≤a_i,j≤1,0001 \le a\_{i,j}\le 1\\,000)

출력

개구리가 집에 가기 위한 최소 점프 횟수를 출력한다. 단, 개구리가 집에 갈 수 없다면 -1을 출력한다.

예제4

  1. 예제 1

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

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

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

    입력
    4 4
    4 4 1 1
    1 4 9 4
    4 3 7 5
    1 4 6 9
    8 3 4 1
    
    예상 출력
    -1