DFS - 연결 요소의 개수[11724번]
2022. 4. 18. 16:23ㆍ2022/BaekJoon_알고리즘
def dfs(idx):
if idx in visited:
return
visited.append(idx)
for nextIdx in range(1, len(graph[idx])):
if(graph[idx][nextIdx] == 1) and (nextIdx not in visited):
dfs(nextIdx)
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N, M = map(int, input().split())
graph = [[0]*(N+1) for _ in range(N+1)]
for _ in range(M):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
global graph
global visited
visited = []; cnt = 0
for i in range(1, N+1):
if i not in visited:
dfs(i)
cnt+=1
print(cnt)
- 재귀함수는 Depth가 정해져있으므로 바꾸어야 함 -> sys.setrecursionlimit(10000)
- 시작이 정해지지 않은 경우에는 1부터 N까지 하나씩 확인
'2022 > BaekJoon_알고리즘' 카테고리의 다른 글
BFS - 단지번호붙이기 [2667번] (0) | 2022.07.14 |
---|---|
BFS - 미로 탐색 [2178번] (0) | 2022.07.14 |
DFS - DFS와BFS[1260번] (0) | 2022.04.17 |
DFS - 바이러스[2606번] (0) | 2022.04.09 |
Dynamic Programming(DP) - 정수 삼각형[1932] (0) | 2022.04.07 |