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
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 1987번 python 풀이 - DFS (0) | 2022.12.19 |
---|---|
[백준/BOJ] - 2583번 python 풀이 - DFS (0) | 2022.12.19 |
[백준/BOJ] - 4963번 python 풀이 - DFS (0) | 2022.12.16 |
[백준/BOJ] - 2606번 python 풀이 - 첫 DFS 문제 (1) | 2022.12.04 |
[백준/BOJ] - 1764번 python 풀이 (0) | 2022.11.29 |