Hanbit the Developer

[Python] 백준 11725번: 트리의 부모 찾기 본문

Algorithm/백준

[Python] 백준 11725번: 트리의 부모 찾기

hanbikan 2021. 6. 17. 21:31

https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net

import sys
input = sys.stdin.readline


def getParents(tree, N):
    parents = [-1 for _ in range(N+1)]
    todo = [1]

    while todo:
        cur = todo.pop(0)

        for node in tree[cur]:
            if parents[node] == -1:
                todo.append(node)
                parents[node] = cur

    return parents


if __name__ == '__main__':
    N = int(input())

    tree = {i: [] for i in range(1, N+1)}
    for _ in range(N-1):
        a, b = map(int, input().split())
        tree[a].append(b)
        tree[b].append(a)

    parents = getParents(tree, N)
    for i in range(2, N+1):
        print(parents[i])

우선 입력값들을 dictionary에 저장한다.

1번이 루트라고 하였으니, 1번부터 시작해서 bfs를 돌리면 된다. 가령 1의 인접노드가 [3, 5]라고 하면, parents[3], parents[5]에 1을 대입하는 식으로 말이다.

마지막으로 이것을 2부터 시작해서 출력하면 된다.

'Algorithm > 백준' 카테고리의 다른 글

[Python] 백준 1629번: 곱셈  (0) 2021.06.20
[Python] 백준 1167번: 트리의 지름  (0) 2021.06.18
[Python] 백준 2923번: 숫자 게임  (0) 2021.06.17
[Python] 백준 2785번: 체인  (0) 2021.06.16
[C] 백준 1717번: 집합의 표현  (0) 2021.06.13