๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 11724 - ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜(BFS)

by YWTechIT 2021. 4. 19.
728x90

๐Ÿ“Œ ๋ฐฑ์ค€ 11724 - ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜

๋ฌธ์ œ ์„ค๋ช…


๐Ÿ’ก ๋‚˜์˜ ํ’€์ด

์ด๋ฒˆ ๋ฌธ์ œ๋Š” BFS์™€ DFS๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚˜์ง€ ์•Š์•˜๋‹ค.(๊ทผ์†Œํ•˜๊ฒŒ dfs๊ฐ€ 48m/s์ •๋„ ๋นจ๋ž๋‹ค.)

728x90

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์—†์„ ๋•Œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊ฟ”์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์ดํ›„์— ๋ช‡ ๋ฒˆ ๋…ธ๋“œ๋ผ๋ฆฌ ์ด์–ด์กŒ๋Š”์ง€๋ฅผ graph์— ์ž…๋ ฅํ•˜๋ฉด ๋˜๋Š”๋ฐ ๋ฌด ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ธฐ๋•Œ๋ฌธ์— ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋œ๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ1์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค. graph์˜ index๊ฐ€ ๋…ธ๋“œ์ด๋‹ค.

 

from collections import deque
import sys
input = sys.stdin.readline

def bfs(graph, start, visited):    # BFS implementation
    queue = deque([start])
    visited[start] = True

    while queue:
        v = queue.popleft()
        for i in graph[v]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True

N, M = map(int, input().split())
graph = [[] for _ in range(N + 1)]
visited = [False] * (N + 1)

for i in range(M):
    node1, node2 = map(int, input().split())
    graph[node2].append(node1)
    graph[node1].append(node2)

cnt = 0
for i in range(1, N+1):    # check each node
    if not visited[i]:
        bfs(graph, i, visited)
        cnt += 1
print(cnt)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€