[未解決の問題]伯俊7576


本当に簡単な問題だが、そんなに簡単だとは思わなかった.上記の場合、最短距離を探す問題であるため、基本的にはbfsを用い、開始点が2つ以上であれば、開始点をドキュメンタリーに入れるだけでよい.

プログラムを閉じるには、exit(0)を使用します.
from collections import deque

m, n = map(int, input().split())

graph = []
for _ in range(n):
    graph.append(list(map(int, input().split())))

mx = [1, -1, 0 ,0]
my = [0, 0, 1, -1]

queue = deque()

for i in range(n):
    for j in range(m):
        if graph[i][j] == 1:
            queue.append([i, j])

maxi = 1
while queue:
    x, y = queue.popleft()
    maxi = max(maxi, graph[x][y])
    for i in range(4):
        nx = x + mx[i]
        ny = y + my[i]

        if 0 <= nx < n and 0 <= ny < m:
            if graph[nx][ny] == 0:
                graph[nx][ny] = graph[x][y] + 1
                queue.append([nx, ny])

zero = False
for i in range(n):
    if 0 in graph[i]:
        print(-1)
        exit(0)

print(maxi-1)