파이썬 deque를 사용해서 bfs를 수행한다.
import sys
from collections import deque
input = sys.stdin.readline
n,m,k = map(int, input().split())
gra = [[0 for _ in range(m)]for _ in range(n)]
for i in range(k):
a,b = map(int, input().split())
gra[a-1][b-1] = 1
# print(gra)
visited = [[0 for _ in range(m)]for _ in range(n)]
dx = [1,-1,0,0]
dy = [0,0,1,-1]
def bfs(x,y) :
q = deque([])
q.append((x,y))
ans = 0
visited[x][y] = 1
while q :
x,y = q.popleft()
ans += 1
for i in range(4) :
nx,ny = x+dx[i],y+dy[i]
if ( 0<=nx<n and 0<=ny<m and gra[nx][ny] == 1 ):
if visited[nx][ny] == 0 :
q.append((nx,ny))
visited[nx][ny]= 1
return ans
maxnum =0
for i in range(n):
for j in range(m):
if gra[i][j] == 1 :
# 음식물 있으니 bfs 하기
maxnum = max(bfs(i,j),maxnum)
print(maxnum)
'알고리즘 문제풀이' 카테고리의 다른 글
상자넣기(백준 1965) (0) | 2023.09.01 |
---|---|
피자(Large) (백준14607) (0) | 2023.09.01 |
야쿠르트 아줌마 야쿠르트 주세요(백준 20160) (0) | 2023.08.30 |
악덕 영주 혜유(백준 20010) (0) | 2023.08.29 |
골목 대장 호석 - 효율성 1 (백준20182) (0) | 2023.08.28 |