백준 BFS 문제
링크 : https://www.acmicpc.net/problem/7576
시간제한 : 1초
메모리 제한 : 256MB
from collections import deque
n,m = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(m)]
visited = [[0] *n for _ in range(m)]
cnt = 0
dx = [1,-1,0,0]
dy = [0,0,1,-1]
q = deque()
def BFS(x,y):
q.append((x,y))
temp = 1
while q:
x,y = q.popleft()
for i in range(4):
nx,ny = x+dx[i],y+dy[i]
if 0<= nx < m and 0<= ny <n and visited[nx][ny] == 0:
if arr[nx][ny] == 0:
arr[nx][ny] = arr[x][y] +1
temp = max(arr[nx][ny],temp)
visited[nx][ny] = 1
q.append((nx,ny))
return temp -1
for i in range(m):
for j in range(n):
if arr[i][j] == 1 and visited[i][j] == 0:
q.append((i,j))
for i in range(m):
for j in range(n):
if arr[i][j] == 1 and visited[i][j] == 0:
cnt = max(BFS(i,j),cnt)
for i in range(m):
for j in range(n):
if arr[i][j] == 0:
cnt = -1
print(cnt)
while q:
x,y = q.popleft()
for i in range(4):
nx,ny = x+dx[i],y+dy[i]
if 0<= nx < m and 0<= ny <n and visited[nx][ny] == 0:
if arr[nx][ny] == 0:
arr[nx][ny] = arr[x][y] +1
visited[nx][ny] = 1
q.append((nx,ny))
for i in range(m):
for j in range(n):
if arr[i][j] == 0:
print(-1)
exit(0)
cnt = max(arr[i][j],cnt)