티스토리 뷰

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

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

문제

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

코드

import sys
sys.setrecursionlimit(10**9)
n = int(sys.stdin.readline())
parent = [-1] * (n + 1)
tree = [[] for _ in range(n + 1)]
for _ in range(n - 1):
    a, b = map(int, sys.stdin.readline().split())
    tree[a].append(b)
    tree[b].append(a)
def dfs(s):
    for i in tree[s]:
        if parent[i] == -1:
            parent[i] = s
            dfs(i)
dfs(1)
for i in range(2, n + 1):
    print(parent[i])

풀이

dfs함수에 1부터 넣어 넣은 값이 인덱스인 tree리스트의 값에 대응되는 parent리스트의 값이 초기값인 -1이면 함수에 넣은 매개변수 값으로 교체해주고 다시 dfs를 그 tree리스트의 값으로 돌린다. 이러면 parent리스트에는 각 인덱스의 값의 부모 노드의 숫자가 저장된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함