import sys
from collections import deque
from itertools import combinations
import copy
input = sys.stdin.readline
N,M = map(int,input().split())
board = [list(map(int,input().split())) for _ in range(N)]
# 준비 1
safe_zone = []
virus = []
res = 0
dx = [-1,0,1,0]
dy = [0,-1,0,1]
# 감염
def BFS():
global res
cnt = len(safe_zone)-3
ch_virus = deque([])
for x,y in virus:
ch_virus.append((x,y))
while ch_virus:
xx,yy = ch_virus.popleft()
for i in range(4):
nx = xx + dx[i]
ny = yy + dy[i]
if 0<=nx<N and 0<=ny<M and ch_board[nx][ny] == 0:
ch_board[nx][ny] = 2
ch_virus.append((nx,ny))
cnt-=1
res = max(res,cnt)
# 준비
for i in range(N):
for j in range(M):
if board[i][j] == 0:
safe_zone.append((i,j))
elif board[i][j] == 2:
virus.append((i,j))
# 조합
for comb in combinations(safe_zone,3):
ch_board = copy.deepcopy(board)
for x,y in comb:
ch_board[x][y] = 1
BFS()
# 최댓값 출력
print(res)
'Algorithm' 카테고리의 다른 글
[BaekJoon] 백준 알고리즘 2559번 / 수열 / 투포인터 / Python (0) | 2023.03.28 |
---|---|
[BaekJoon] 백준 알고리즘 4963번 / 섬의 개수 / DFS / Python (0) | 2023.03.25 |
[BaekJoon] 백준 알고리즘 1966번 / 프린터 큐 / 시뮬레이션 / Python (0) | 2023.03.17 |
[BaekJoon] 백준 알고리즘 11724번 / 연결 요소의 개수 / DFS / Python (0) | 2023.03.11 |
[BaekJoon] 백준 알고리즘 6603번 / 로또 / 백트래킹(DFS) / Python (0) | 2023.03.10 |
댓글