본문 바로가기
백준 풀이

[백준/BOJ] - 11724번 python 풀이 - DFS

by 반오십 코린이 2022. 12. 18.
728x90


Key Point

1. 0번 index는 헷갈리니 안 쓸 거기 때문에 열을 하나 더 만들어준다.

2. 동떨어진 노드(다른 노드와 연결 되지 않은 노드)가 있을 수 있으니 예외처리 해준다.


import sys
input = sys.stdin.readline
sys.setrecursionlimit(1000000)
n,m = map(int, input().split())
cnt = 0
visited = [False] * (n+1) #0번 안 쓸거임
graph = [[]*0 for _ in range(n+1)]

def dfs(node: int):
    visited[node] = True

    for item in graph[node]:
        if not visited[item]:
            dfs(item)

for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b) 
    graph[b].append(a)

for i in range(1, n+1): # 1~ 3
    if visited[i] == False:
        if len(graph[i]) != 0: # 연결된 노드가 있을 경우
            dfs(graph[i][0])
            cnt+=1
        else: # 연결된 노드가 없을 경우
            cnt+=1
print(cnt)
728x90