재귀 방식으로 푼 DFS 문제
[참고]
https://letalearns.tistory.com/145
재귀로 푸는 만큼 재귀 제한 걸어주기!
import sys
sys.setrecursionlimit(10**6)
#input = sys.stdin.readline
#재귀
def dfs(idx):
visited[idx] = 1
for i in graph[idx]:
if not visited[i]:
dfs(i)
N, M = map(int, sys.stdin.readline().rstrip().rsplit())
visited = [0 for _ in range(N+1)]
graph = [[] for _ in range(N+1)]
total = 0
for _ in range(M):
n1, n2 = map(int, sys.stdin.readline().rstrip().rsplit())
graph[n1].append(n2)
graph[n2].append(n1)
for i in range(1, N+1):
if not visited[i]:
dfs(i)
total += 1
print(total)
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[1일1코딩] BOJ 2606 바이러스 - DFS python (0) | 2022.11.21 |
---|---|
[BOJ] 2565 전깃줄 Python (0) | 2022.08.04 |
[BOJ] 1931 회의실 배정 Python (0) | 2022.08.03 |
[프로그래머스] MYSQL 코드 정리 (0) | 2022.07.22 |
[BOJ] 숨바꼭질 (0) | 2022.07.21 |