해결된 질문
작성
·
220
답변 2
1
import sys
import collections
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
N, M = map(int, input().split())
dic = collections.defaultdict(list)
visited = []
result = 0
for _ in range(M):
x, y = map(int, input().split())
dic[x].append(y)
dic[y].append(x)
def dfs(node):
global visited, dic
visited.append(node)
for n in dic[node]:
if n not in visited:
dfs(n)
for node in list(dic.keys()):
if node not in visited:
dfs(node)
result += 1
print(result)
kyg8821님 안녕하세요!
dictionary를 쓰려는 접근은 좋았는데 구현할 때 살짝 실수가 있었던 것 같아요.
main함수에서 dfs를 호출해주는 부분에서 1부터 N까지 포함하여 모든 노드를 확인해야 하는데 지금은 딕셔너리에 있는 노드들만 확인하고 있습니다.
딕셔너리에 있는 노드라는 건 다른 노드와 한번 이상 연결되어있는 노드이기 때문에, 혼자 동 떨어져있는 노드의 경우는 계산되지 않아 오답이 나오는 것 같고요!
그래서 for node in list(dic.keys()):
위 부분을
for i in range(1,N+1):
로 바꾸면 정답이 잘 나올것 같습니다 :)
0
제가 작성한 코드에요!