[白俊/python]DFS/BFD-7576号トマト



👩🏻‍🏫 に答える

import sys
from collections import deque

# bfs 함수 밖에 정의
q = deque()

### 2
def bfs():
  # q.append((x,y))
  # 큐가 비워질때까지 반복문
  while q:
    x,y = q.popleft()
    for i in range(4):
      nx = x + dx[i]
      ny = y + dy[i]
      if 0 <= nx < n and 0 <= ny < m:
        if  graph[nx][ny] == 0:
          graph[nx][ny] = graph[x][y]+1
          q.append((nx,ny))
  
### 1
# 가로 칸, 세로 칸
m,n = map(int,sys.stdin.readline().split())
graph = []
dx = [-1,1,0,0]
dy = [0,0,-1,1]

# graph = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]]
for i in range(n):
  graph.append(list(map(int,sys.stdin.readline().split())))
# 익은 토마토의 좌표를 먼저 큐에 저장
for i in range(n):
  for j in range(m):
    if graph[i][j] == 1:
      q.append((i,j))  
      
### 3
bfs()
cnt = 0
# graph = [[9, 8, 7, 6, 5, 4], [8, 7, 6, 5, 4, 3], [7, 6, 5, 4, 3, 2], [6, 5, 4, 3, 2, 1]]
for i in graph:
  for j in i:
    if j == 0:
      print(-1)
      exit(0)
  cnt = max(cnt,max(i))
#  처음을 1로 시작했으므로 -1을 빼줌
print(cnt-1)
  • q = deque():関数外定義
  • dfs():因子なし使用関数
  • q.append((i,j)):熟トマトの座標をキューに保存してからdfs()関数(dfs関数に追加しない)を使う
  • ▼Python文法

  • 終了コード
  • 一般的には0と1の2種類のエンドコードのみ使用
  • 0は成功、1は失敗.