그래프들이 노드와 간선으로 쭉 이어진 모습과 각 노드들을 모두 탐색해야 하는 걸 보니 dfs/bfs 문제인 것 같다는 생각이 든다.
# dfs
import sys
sys.setrecursionlimit(10**9)
def dfs(start, tree, parent):
for i in tree[start]:
if parent[i] == 0:
# 방문 체크, 핵심 로직
parent[i] = start
dfs(i, tree, parent)
def main():
n = int(input())
# 그래프 구축
tree = [[] for _ in range(n + 1)]
for _ in range(n - 1):
a, b = map(int, input().split())
tree[a].append(b)
tree[b].append(a)
# 각 노드의 부모 노드 = 0 (초기값)
parent = [0 for _ in range(n + 1)]
dfs(1, tree, parent)
for i in range(2, n + 1):
print(parent[i])
main()
어렵지 않게 풀 수 있다.!