만드는 중입니다

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

마르고, 메가바이트버그를 떠나다

면접 대비

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

요약
벽이 있는 격자에서 마르고가 기숙사에서 공항까지 갈 수 있는지 판단합니다. 한 칸씩 걷거나 두 칸씩 점프하며, 점프는 최대 K번까지 쓸 수 있습니다.
난이도

보통10점 중 5점

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

문제

최근 사건 때문에 마르고는 메가바이트버그를 떠나야 한다. 이 도시는 길이가 MM, 높이가 NN인 직사각형 격자다. 각 칸은 빈 칸(.)이거나 벽(#)이다. 마르고는 한 번의 이동으로 (i,j)(i, j) 칸에서 (i−1,j)(i - 1, j), (i+1,j)(i + 1, j), (i,j−1)(i, j - 1), (i,j+1)(i, j + 1) 중 한 칸으로 갈 수 있다. 또한 마르고는 메가점프를 최대 KK번 사용할 수 있다. 메가점프는 (i,j)(i, j) 칸에서 (i−2,j)(i - 2, j), (i+2,j)(i + 2, j), (i,j−2)(i, j - 2), (i,j+2)(i, j + 2) 중 한 칸으로 옮겨 간다. 메가점프를 썼는지와 관계없이 마르고는 메가바이트버그 안의 빈 칸에서 이동을 끝내야 한다. 마르고의 기숙사는 (dx,dy)(d_x, d_y) 칸에 있고, 가고 싶은 공항은 (ax,ay)(a_x, a_y) 칸에 있다. 두 칸 모두 빈 칸이며 서로 다르다. 지금은 생각할 시간이 없어서 마르고에게 도움이 필요하다. 기숙사에서 공항까지 갈 수 있는지 알아내라.

입력

첫 줄에 NN, MM, KK (2≤N,M≤10002 \le N, M \le 1000, 0≤K≤1060 \le K \le 10^6)가 주어진다. 각각 메가바이트버그의 크기와 마르고가 쓸 수 있는 메가점프 횟수다. 다음 NN개 줄에는 . 또는 #으로 이루어진 MM개의 문자가 주어지며 도시의 모습을 나타낸다. N+2N + 2번째 줄에는 기숙사 좌표 dx,dyd_x, d_y (1≤dx≤N1 \le d_x \le N, 1≤dy≤M1 \le d_y \le M)가 주어지고, 이 칸은 빈 칸이 보장된다. 마지막 줄에는 공항 좌표 ax,aya_x, a_y (1≤ax≤N1 \le a_x \le N, 1≤ay≤M1 \le a_y \le M)가 주어지고, 이 칸도 빈 칸이 보장된다. 기숙사와 공항은 서로 다른 칸이다.

출력

마르고가 기숙사에서 공항까지 갈 수 있으면 YES를, 그렇지 않으면 NO를 출력한다. 대소문자는 상관없다.

힌트

Python으로 작성한 풀이는 PyPy에 제출하면 빨라질 수 있다.

예제3

  1. 예제 1

    입력
    3 3 1
    .#.
    #.#
    .#.
    1 1
    3 3
    
    예상 출력
    NO
    
  2. 예제 2

    입력
    2 2 0
    #.
    ..
    1 2
    2 1
    
    예상 출력
    YES
    
  3. 예제 3

    입력
    2 5 2
    .#.#.
    ###..
    1 1
    2 4
    
    예상 출력
    YES