• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

백준 2606

23.12.14 16:43 작성 조회수 97

1

안녕하세요 선생님! 복습하다가 의문점이 생겨 질문드립니다.

from collections import defaultdict

N = int(input())
T = int(input())

dic = defaultdict(list)
discovered = []

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


def dfs(node):
    global dic, discovered
    discovered.append(node)

    for n in dic[node]:
        if n not in discovered:
            dfs(n)
    return


dfs(1)
print(len(discovered) - 1)

이 코드에서 dic[b].append(a)를 지워도 문제 해결에는 영향이 없어 보이는데, 백준에 제출하면 틀린 답으로 나옵니다.

즉, 그래프를 양방향이 아닌 단방향으로 설정해도 문제 없지 않나요..?

답변 1

답변을 작성해보세요.

2

kyg8821님 안녕하세요 🙂

단방향인지 양방향인지는 문제에서 주어지는 대로 구현해야 되고 임의로 판단할 수는 없습니다!

예를 들어 (1, 2), (3, 2) 라는 간선 정보가 입력됐다면, 양방향인 경우에는 1,2,3 모두 연결되어 있다고 가정하지만, 단방향일 경우 1과 3은 서로 연결되어 있다고 보지 않습니다. 이 외에도 1에서 2는 갈 수 있지만 2에서 1은 갈 수 없기 때문에 양방향과는 완전히 다른 답안이 나옵니다.

그래서 이 부분은 직접 판단할 필요가 없고 문제에서 주어지는 대로 구현하시면 됩니다! 이 문제 같은 경우 양방향을 요구하기 때문에 append를 2줄 수행해야 됐고, 단방향일 때는 말씀하신 대로 한 줄은 생략해야 정답이 됩니다!

혹시 더 궁금하시거나 이해가 안 되는 부분은 댓글 남겨주세요 :)