살얼음 건너기
시간 제한1초메모리 제한128 MB
얇은 얼음 칸으로 이루어진 m×n 격자에서 아무 칸에서나 시작해 깨지지 않은 얼음만 밟으며 지나갈 수 있는 최대 칸 수를 구한다.
문제
어느 추운 겨울날, 넓은 광장에 언 살얼음을 깨뜨리며 노는 놀이를 하려고 한다. 광장은 직사각형 모양이며, 동서 방향으로 칸, 남북 방향으로 칸, 즉 개의 칸으로 나뉘어 있다. 각 칸에는 살얼음이 있는 칸과 없는 칸이 있다. 다음 규칙에 따라 살얼음을 깨뜨리며 칸을 이동한다.
- 살얼음이 있는 어느 칸에서든 살얼음 깨기를 시작할 수 있다.
- 동서남북 중 한 방향으로 인접하고, 아직 깨지지 않은 살얼음이 있는 칸으로 이동할 수 있다.
- 이동한 칸의 살얼음은 반드시 깨진다.
이때 시작한 칸을 포함하여, 살얼음을 깨뜨리며 지나갈 수 있는 칸 수의 최댓값을 구하는 프로그램을 작성하시오. 단, , 이다. 주어지는 입력에서 가능한 이동 경로의 수는 20만 가지를 넘지 않는다.
입력
입력은 개의 줄로 이루어진다. 첫째 줄에는 정수 이, 둘째 줄에는 정수 이 주어진다. 셋째 줄부터 째 줄까지 각 줄에는 또는 이 공백으로 구분되어 개씩 주어지며, 해당 칸에 살얼음이 있는지를 나타낸다. 북쪽에서 번째, 서쪽에서 번째 칸을 라 하면 (, ), 제 째 줄의 번째 값은 칸 에 살얼음이 있으면 , 없으면 이다.
출력
지나갈 수 있는 칸 수의 최댓값을 출력하시오.