
π‘λ¬Έμ μ€λͺ

wμ hλ 50λ³΄λ€ μκ±°λ κ°μ μμ μ μμ΄λ€.hκ° μ€μλ μ§λκ° μ£Όμ΄μ§λ€. 1μ λ
, 0μ λ°λ€μ΄λ€.0μ΄ λ κ° μ£Όμ΄μ§λ€.βDFSμ λν΄




1. νμ μμ λ
Έλλ₯Ό μ€νμ μ½μ
νκ³ λ°©λ¬Έ μ²λ¦¬λ₯Ό ν©λλ€.2 - 1. μ€νμ μ΅μλ¨ λ
Έλμ λ°©λ¬Ένμ§ μμ μΈμ λ
Έλκ° μμΌλ©΄ κ·Έ μΈμ λ
Έλλ₯Ό μ€νμ λ£κ³ λ°©λ¬Έμ²λ¦¬λ₯Ό ν©λλ€.2 - 2. λ°©λ¬Ένμ§ μμ μΈμ λ
Έλκ° μμΌλ©΄ μ€νμμ μ΅μλ¨ λ
Έλλ₯Ό κΊΌλ
λλ€.2 λ² κ³Όμ μ λ μ΄μ μνν μ μμ λκΉμ§ λ°λ³΅ν©λλ€.π§βπ» μ½λ νμ΄
def dfs(x, y):
if x == m or y == n:
return board
for i in range(8):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < m and 0 <= ny < n and board[nx][ny] == 1:
board[nx][ny] = 0
dfs(nx, ny)
while (True):
n, m = map(int, sys.stdin.readline().split())
if n == 0 and m == 0:
break
board = []
answer = 0
for i in range(m):
board.append(list(map(int, sys.stdin.readline().split())))
for i in range(m):
for j in range(n):
if board[i][j] == 1:
dfs(i, j)
answer += 1
print(answer)
import sys
sys.setrecursionlimit(10000)
dx = [0, 1, 1, 1, 0, -1, -1, -1]
dy = [1, 1, 0, -1, -1, -1, 0, 1]
board = []
def dfs(x, y):
if x == m or y == n:
return board
for i in range(8):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < m and 0 <= ny < n and board[nx][ny] == 1:
board[nx][ny] = 0
dfs(nx, ny)
while (True):
n, m = map(int, sys.stdin.readline().split())
if n == 0 and m == 0:
break
board = []
answer = 0
for i in range(m):
board.append(list(map(int, sys.stdin.readline().split())))
for i in range(m):
for j in range(n):
if board[i][j] == 1:
dfs(i, j)
answer += 1
print(answer)