๋ฐ์ํ
๐ ๋ฌธ์ ๋ถ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์๊ฐ์ ๊ตฌํ๊ธฐ

๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
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,000ํ ์ผ๋ก ๋งค์ฐ ์์ ํธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋, ์ฝ๋์ ์๋จ์ sys.setrecursionlimit(10**6)์ ์์ฑํด์ฃผ๋ฉด ์ฌ๊ท์ ์ต๋ ๊น์ด๊ฐ 10**6์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค.
๋ฐ์ํ
'๋ฐฑ์ค | Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][1931] ํ์์ค ๋ฐฐ์ | ํ์ด์ฌ (0) | 2024.05.21 |
---|---|
[๋ฐฑ์ค][11399] ATM | ํ์ด์ฌ (0) | 2024.05.21 |
[๋ฐฑ์ค][1260] DFS์ BFS | ํ์ด์ฌ (0) | 2024.05.13 |
[๋ฐฑ์ค][1654] ๋์ ์๋ฅด๊ธฐ | ํ์ด์ฌ (0) | 2024.05.11 |
[๋ฐฑ์ค][2805] ๋๋ฌด์๋ฅด๊ธฐ | ํ์ด์ฌ (0) | 2024.05.09 |