티스토리 뷰

[Gold V] 토마토 - 7576

문제 링크

성능 요약

메모리: 224104 KB, 시간: 620 ms

분류

너비 우선 탐색(bfs), 그래프 이론(graphs), 그래프 탐색(graph_traversal)

import sys
from collections import deque

input = sys.stdin.readline

dx, dy = [0, 0, 1, -1], [-1, 1, 0, 0]


def bfs():
    while q:
        x, y = q.popleft()

        for i in range(4):
            nx, ny = x + dx[i], y + dy[i]

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



# m : 가로 칸수 n : 세로 칸수
m, n = map(int, input().split())

graph = []

# 그래프 값 채워넣기
for x in range(n):
    graph.append(list(map(int, input().split())))

roti_sw = True

q = deque()
visited = [list(0 for _ in range(m)) for _ in range(n)]

for x in range(n):
    for y in range(m):
        if graph[x][y] == 1:
            q.append([x, y])
        else:
            roti_sw = False

# 토마토가 전부 익어있음 ;;
if roti_sw:
    print(0)
    sys.exit(0)

bfs()

for x, value in enumerate(graph):
    for y, value2, in enumerate(value):
        # 안익은 토마토가 존재한다면
        if graph[x][y] == 0:
            print(-1)
            sys.exit(0)

print(max(map(max, graph)) - 1)

'코딩테스트 > 백준' 카테고리의 다른 글

파이썬 | 14502 _ 연구소 _G5  (0) 2022.07.13
파이썬 | 10026 _ 적록색약 _ G5  (0) 2022.07.12
파이썬 | 5014 _ 스타트링크 _ G5  (0) 2022.07.08
파이썬 | 2589_보물섬_G5  (0) 2022.07.07
파이썬 | 16918 봄버맨 _ S1  (0) 2022.07.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함