반응형

-풀이

import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline
V = int(input())
graph = [[] for _ in range(V+1)]
visited = [False for _ in range(V+1)]
answer = [0 for _ in range(V+1)]
for _ in range(V-1):
  a,b = map(int, input().split())
  graph[a].append(b)
  graph[b].append(a)

def dfs(node):
  visited[node] = True
  for i in graph[node]:
    if visited[i] == False:
      answer[i] = node
      dfs(i)
dfs(1)
for j in range(2,V+1):
  print(answer[j])

-풀이 설명

graph에 간선의 정보를 다 저장한 뒤 dfs함수를 돌려, 부모 노드를 찾아야 하므로, 방문체크를 해주면서, 방문하지 않았을 경우 answer리스트의 인덱스를 자식노드라고 생각하고 그 인덱스에 부모노드(node)를 담아준 뒤, 두 번째 노드부터 차례대로 출력해주면 해결된다.

+ Recent posts