[백준] 17086번 아기 상어 2 (bfs, python)

728x90
반응형

www.acmicpc.net/problem/17086

 

17086번: 아기 상어 2

첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸의 개수가 한 개 이상인 입력만 주어진다.

www.acmicpc.net

from _collections import deque

def bfs():
    q = deque()
    q.append((i,j,0))
    vis[i][j]=1
    while q:
        y,x,cnt=q.popleft()
        if a[y][x]==1:
            return cnt
        for k in range(8):
            xx=x+dx[k]
            yy=y+dy[k]
            if xx<0 or yy<0 or xx>=m or yy>=n: continue
            if vis[yy][xx]: continue
            q.append((yy,xx,cnt+1))
            vis[yy][xx]=1
    return 0


n,m=map(int,input().split())
vis=[[0]*m for _ in range(n)]
a=[list(map(int,input().split())) for _ in range(n)]
dx,dy=[1,-1,0,0,-1,-1,1,1],[0,0,1,-1,-1,1,-1,1]



res=0
for i in range(n):
    for j in range(m):
        vis = [[0] * m for _ in range(n)]
        cur=bfs()
        if cur>res:
            res=cur

print(res)
728x90
반응형
TAGS.

Comments