쉬운 최단거리
시간 제한1초메모리 제한128 MB
하나의 목표 칸과 막힌 칸이 있는 격자에서 상하좌우 이동으로 각 열린 칸에서 목표까지의 최단 거리를 구한다.
문제
지도가 주어진다. 모든 칸에서 목표 지점까지의 최단 거리를 구하여라.
문제를 쉽게 만들기 위해 이동은 상하좌우 네 방향으로만 할 수 있다고 하자. 인접한 칸으로 한 번 움직이면 거리가 1 늘어나고, 갈 수 없는 땅은 지나갈 수 없다.
입력
첫째 줄에 지도의 크기 과 이 주어진다. 은 세로 크기, 은 가로 크기다. (, )
다음 개 줄에 각각 개의 숫자가 공백으로 구분되어 주어진다. 0은 갈 수 없는 땅, 1은 갈 수 있는 땅, 2는 목표 지점이다. 2는 입력 전체에 정확히 한 개 있다.
출력
개 줄에 각각 개의 수를 공백으로 구분해 출력한다. 번째 줄의 번째 수는 행 열 칸에서 목표 지점까지의 최단 거리다.
갈 수 없는 땅인 칸은 0을 출력한다. 갈 수 있는 땅이지만 목표 지점에 도달할 수 없는 칸은 -1을 출력한다. 목표 지점 자체는 0을 출력한다.