ํ์ด
๋ซ๋ฆฐ ๋ถ๋ถ์ ์ ์ธํ ๊ณต๊ธฐ์ ์ ์ด๋๋ ์น์ฆ๋ ๋ น์ ๋ ์ ์ฒด๊ฐ ๋ น์ผ๋ ค๋ฉด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๊ณ ๋ น๊ธฐ ์ง์ ์ ์น์ฆ๋ฉด์ ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
2์ฐจ์ ๋ฐฐ์ด์ ํ ๋๋ฆฌ๊ฐ ๋น์นธ์ผ๋ก ์ฃผ์ด์ง๋ค๋ ์ ์ ํ์ฉํด์ 0, 0 ์ ์์์ผ๋ก BFS ๋ฅผ ์คํํ์ ๋ 1 ์ด ์๋ ์ง์ ์ 0 ์ผ๋ก ๋ฐ๊พธ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ ํด์ฃผ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ๊ณต๊ธฐ์ ์ ์ดํ ์นธ์ ๋ น์ธ ์ํ์ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
BFS ๊ฐ ๋ชจ๋ ์คํ๋๊ณ ๋๋ฉด board ์ ๊ฐ์ ๋ํ์ฌ ๋จ์์๋ ์น์ฆ๋ฉด์ ์ ๋ฆฌํดํ๋ค.
๋ง์ฝ ์น์ฆ๋ฉด์ ์ด 0์ด ์๋๋ผ๋ฉด ans ์ ์ ์ฅํด์ค ํ BFS ๋ฅผ ๋ค์ ์คํํ๋ค.
์น์ฆ๋ฉด์ ์ด 0์ด ๋์๋ค๋ฉด ans ์ ์ ์ฅํด๋ 1์๊ฐ ์ ์ ์น์ฆ๋ฉด์ ๊ณผ ๋ฐ๋ณต๋ BFS ์ ํ์๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด๋๋ค.
์์ค์ฝ๋
# ์น์ฆ
from collections import deque
import sys
input = sys.stdin.readline
def bfs(i, j):
q = deque()
q.append((i, j))
visited[i][j] = 1
while q:
x, y = q.popleft()
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < n and 0 <= ny < m and visited[nx][ny] == 0:
visited[nx][ny] = 1
if board[nx][ny] == 0:
q.append((nx, ny))
else:
board[nx][ny] = 0
total = 0
for b in board:
total += sum(b)
return total
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]
hr = 0
ans = 0
for b in board:
ans += sum(b)
while True:
visited = [[0]*m for _ in range(n)]
temp = bfs(0, 0)
hr += 1
if temp == 0:
print(hr)
print(ans)
break
ans = temp