벽이 있는 격자에서 벽 한 칸을 한 번만 부술 수 있을 때 시작점에서 출구까지의 최단 이동 횟수를 구한다.
보통7BFS그래프배열아직 제출이 없습니다시간 제한1초메모리 제한512 MB홍익이가 사악한 마법사의 꾐에 속아 N×M 크기의 미로 안, (Hx,Hy) 칸에 떨어졌다. 다행히 홍익이는 미로의 탈출 위치 (Ex,Ey)를 알고 있다. 하지만 미로 곳곳에 마법사가 세운 벽이 있어서 빠져나가기가 쉽지 않다.
홍익이에게는 마법사의 연구실에서 훔친 지팡이가 있어서 벽 한 칸을 빈칸으로 바꿀 수 있다. 그렇지만 지팡이는 단 한 번만 쓸 수 있다.
홍익이는 상하좌우로 맞닿은 칸으로만 움직이고, 한 칸을 움직이는 데 모두 같은 시간이 든다. 벽을 부수는 데는 시간이 들지 않는다. 홍익이가 미로에서 탈출할 수 있는지 판단하고, 할 수 있다면 가장 빠른 경로의 이동 횟수 D를 구하자.
N M
Hx Hy
Ex Ey
네째 줄부터 N개의 줄에 걸쳐 미로가 주어진다. 각 줄은 공백으로 구분된 M개의 정수로 이루어지며, 0은 빈칸, 1은 벽이다.
탈출 칸까지 가는 최소 이동 횟수 D를 한 줄에 출력한다. 지팡이를 한 번 써도 탈출 칸에 닿을 수 없으면 -1을 출력한다.
첫 번째 예제에서는 제일 왼쪽 위 칸에서 제일 오른쪽 아래 칸으로 가려면 (3,2)의 벽을 부수고 지나가면 된다.