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