์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ |
---|---|
3์ด | 512MB |
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)
์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
์ฒซ์งธ ์ค : ์ ์ ์ ๊ฐ์ $N$, ๊ฐ์ ์ ๊ฐ์ $M$
๋์งธ ์ค ~ $M$๊ฐ : ๊ฐ์ ์ ์ ๋ ์ u, v
์ฐ๊ฒฐ ์์์ ๊ฐ์
<aside> ๐ https://www.acmicpc.net/problem/11724
</aside>
import sys
from collections import defaultdict
v, e = map(int, sys.stdin.readline().strip().split())
graph = defaultdict(list)
for _ in range(e):
a, b = map(int, sys.stdin.readline().strip().split())
graph[a].append(b)
graph[b].append(a)
def dfs(node):
if node not in visited:
visited.add(node)
for next in graph[node]:
dfs(next)
return 1
return 0
visited = set()
cnt = 0
for idx in range(v):
cnt += dfs(idx + 1)
print(cnt)
๊ทธ๋ํ ์ด๊ธฐํ $O(e)$
๋ชจ๋ ๋ ธ๋ ๋ฐฉ๋ฌธ(dfs) $O(v + e)$