<내 코드>
import sys
sys.setrecursionlimit(100000) #런타임 에러 방지
n = int(input())
tree = [[] for _ in range(n+1)]
# 양방향으로 노드를 연결하고
for _ in range(n-1): # 노드의 수 - 1 (간선)
a, b = map(int, input().split())
tree[a].append(b)
tree[b].append(a)
# 각 노드의 부모 노드 값 저장용
parents = [0 for _ in range(n+1)]
parents[1] = 1
def dfs(curr, tree, parents):
# print(parents)
for node in tree[curr]:
if parents[node] == 0:
parents[node] = curr # 해당 자식 노드에 부모노드(curr) 값 넣음
dfs(node, tree, parents) # 자식 노드가 서브 트리 루트로서 탐색
dfs(1, tree, parents)
print(*parents[2:])
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 9372] 상근이의 여행 - Python(그래프) (0) | 2020.10.04 |
---|---|
[백준 1967] 트리의 지름 - Python (트리, DFS) (0) | 2020.10.04 |
[백준 1991] 트리 순회 - Python (트리, 재귀) (0) | 2020.10.03 |
[백준 2798] 블랙잭 - Python (브루트포스) (0) | 2020.10.03 |
[백준 13458] 시험 감독 - Python (수학) (0) | 2020.09.23 |