๋ฐฑ์ค€ | Baekjoon

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

sungkshon 2024. 5. 16. 12:58
๋ฐ˜์‘ํ˜•

๐Ÿ‘‰ ๋ฌธ์ œ ๋ถ„์„

๋ฐฉํ–ฅ ์—†๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฐ๊ฒฐ ์š”์†Œ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ


๐Ÿ‘‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

dfs๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

๐Ÿ‘‰ ์ฝ”๋“œ

import sys
from collections import defaultdict

def dfs(x):
    visited[x] = True

    for node in graph[x]:
        if not visited[node]:
            dfs(node)

sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n, m = map(int, input().split())
graph = list([] for _ in range(n+1))

for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

visited = [False]*(n+1)
cnt = 0 #์—ฐ๊ฒฐ ์š”์†Œ ๊ฐœ์ˆ˜

for i in range(1, n+1):
    if not visited[i]:
        dfs(i)
        cnt += 1

print(cnt)

 

๐Ÿ‘‰ ํ‹€๋ฆฐ ์ด์œ 
๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ

 

๐Ÿ‘‰ ํ‹€๋ฆฐ ๋ถ€๋ถ„ ์ˆ˜์ • or ๋‹ค๋ฅธ ํ’€์ด

from collections import defaultdict

sys.setrecursionlimit(10**6)

๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

๐Ÿ‘‰ ๋А๋‚€์  or ๊ธฐ์–ตํ• ์ •๋ณด

  1. ์—ฐ๊ฒฐ ์š”์†Œ๋ž€, ๋…ธ๋“œ๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฌถ์Œ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.
  2. ๋Œ€๋ถ€๋ถ„์ด ํŒŒ์ด์ฌ์˜ ์žฌ๊ท€ ์ตœ๋Œ€ ๊นŠ์ด์˜ ๊ธฐ๋ณธ ์„ค์ •์ด 1,000ํšŒ  ์œผ๋กœ ๋งค์šฐ ์–•์€ ํŽธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ, ์ฝ”๋“œ์˜ ์ƒ๋‹จ์— sys.setrecursionlimit(10**6)์„ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ์žฌ๊ท€์˜ ์ตœ๋Œ€ ๊นŠ์ด๊ฐ€ 10**6์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.
๋ฐ˜์‘ํ˜•