간단하게 dfs를 이용해서 풀면 된다. 입력되는 값을 인접리스트 방식으로 입력 받고 dfs 함수를 돌리면서 현재의 노드가 어디와 연결되어 있는지를 root 배열에 저장하면 된다.
import sys
sys.setrecursionlimit(100000)
input = sys.stdin.readline
n = int(input())
graph = [[] for _ in range(n+1)]
for _ in range(n-1):
a, b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
root = [0] * (n+1)
def dfs(graph, v, root):
for i in graph[v]:
if root[i] == 0:
root[i] = v
dfs(graph,i,root)
dfs(graph,1,root)
for i in range(2,n+1):
print(root[i])