from sys import stdin
import sys
sys.setrecursionlimit(10**5)
input = stdin.readline
N = int(input())
tree = list([] for _ in range(N + 1))
root = dict()
for _ in range(N - 1):
S, E = map(int, input().split())
tree[S].append(E)
tree[E].append(S)
def dfs(s):
for i in tree[s]:
if not visited[i]:
root[i] = s
visited[i] = True
dfs(i)
visited = [False] *(N + 1)
dfs(1)
for i in range(2, N+1):
print(root[i])
아주 쉬운 dfs 문제였는데 생각을 잘못 했다.
딕셔너리를 사용하면 dfs를 1번만 실행하면 되는 문제이다.
오답은.. 2번 부터 N번까지 bfs 반복문을 돌렸다.
자식 노드가 되면 리턴하는 형식으로 풀었지만, 그러할 경우 불필요한 방문을 계속 한다.