๋ฌธ์ ์ด๋ฆ | ์ฐ๊ฒฐ ์์์ ๊ฐ์ |
---|---|
๋ฌธ์ ๋ฒํธ | 11724 |
๋์ด๋ | Silver 2 |
๋ฌธ์ ๋งํฌ | https://www.acmicpc.net/problem/11724 |
ํ์ด ์ธ์ด | Python |
์ฒ์์๋ ๋จ์ํ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ํํ๋ฉด์ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค์ ์ฐพ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ผ๋ฉด ๋์ง ์์๊น ์๊ฐํ๋ค
๊ทธ๋์ for
๋ฃจํ๋ฅผ ๋๋ฉด์ ๊ฐ ๋
ธ๋๋ฅผ ์์์ ์ผ๋ก DFS๋ BFS๋ฅผ ์ํํ๊ณ , ํ ๋ฒ์ ํ์์ด ๋๋ ๋๋ง๋ค ์นด์ดํธ๋ฅผ 1์ฉ ์ฌ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ค
๋ฐฉ๋ฌธํ ๋
ธ๋๋ visited
๋ฐฐ์ด์ ํ์ํด์ ์ค๋ณต ๋ฐฉ๋ฌธ์ ํผํ๋๋ก ํ๋ค
์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ๋ง ํ์ธํ๋ฉด์ ์ฐ๊ฒฐ๋ ๋ฉ์ด๋ฆฌ(์ฐ๊ฒฐ ์์)์ ๊ฐ์๋ฅผ ์ ํํ ์ ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n, m = map(int, input().split())
graph = [[] for _ in range(n + 1)]
for _ in range(m):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
visited = [False] * (n + 1)
count = 0
def dfs(v):
visited[v] = True
for i in graph[v]:
if not visited[i]:
dfs(i)
for i in range(1, n + 1):
if not visited[i]:
dfs(i)
count += 1
print(count)
RecursionError
๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ์ ์ ๋ฐฐ์ ๋ค sys.setrecursionlimit()
์ผ๋ก ์ฌ๊ท ๊น์ด๋ฅผ ๋๋ ค์ค์ผ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํด์ผ๊ฒ ๋คvisited
๋ฐฐ์ด์ ์ฌ์ฉํด ๋ฐฉ๋ฌธํ ๋
ธ๋๋ฅผ ์ ํํ ์ฒดํฌํ๋ ๊ฒ์ด ์ค๋ณต ๊ณ์ฐ์ ๋ง๊ณ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋ณด์ฅํ๋ ํต์ฌ์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์๋ค