Algorithm/Graph
[๋ฐฑ์ค] 2583 : ์์ญ ๊ตฌํ๊ธฐ (ํ์ด์ฌ)
_์์ _
2025. 1. 26. 19:15
728x90
SMALL
BFS ๋ฌธ์
https://www.acmicpc.net/problem/2583
๐ก ํ์ด์ฝ๋ (Python3 ์ฑ๊ณต)
import sys
from collections import deque
m, n, k = map(int, sys.stdin.readline().split())
visited = [[False] * (n) for _ in range(m)]
dy = [1, 0, -1, 0]
dx = [0, 1, 0, -1]
def bfs(y, x):
queue = deque()
cnt = 0
queue.append((y, x))
visited[y][x] = True
while queue:
y, x = queue.popleft()
cnt += 1
for ii in range(4):
ny = y + dy[ii]
nx = x + dx[ii]
if 0 <= ny < m and 0 <= nx < n:
if visited[ny][nx] == False:
visited[ny][nx] = True
queue.append((ny, nx))
return cnt
for _ in range(k):
x0, y0, x1, y1 = map(int, sys.stdin.readline().split())
for i in range(y0, y1, 1):
for j in range(x0, x1, 1):
if visited[i][j] == False:
visited[i][j] = True
num = 0
arr = []
for i in range(m):
for j in range(n):
if visited[i][j] == False:
arr.append(bfs(i, j))
num += 1
print(num)
arr.sort()
print(*arr)
728x90
LIST