728x90
https://www.acmicpc.net/problem/11725
각 노드마다 연결되어있는 노드를 저장하는 이차원 리스트를 만든다
각 노드가 방문 여부를 저장하는 리스트를 만든다
부모 노드를 저장하기 위한 parents라는 리스트를 만든다
-> DFS
import sys
input= sys.stdin.readline
def dfs(node):
st = [node]
while st:
v = st.pop()
for n in graph[v]:
if visited[n] == False:
parents[n] = v
visited[n] = True
st.append(n)
n = int(input())
parents = [i for i in range(n+1)]
graph = [[] for _ in range(n+1)]
for _ in range(n-1):
n1, n2 = map(int, input().split())
graph[n1].append(n2)
graph[n2].append(n1)
visited = [False] * (n+1)
dfs(1)
for i in parents[2:]:
print(i)
재귀로 풀면 RecursionError가 나기 때문에 while문으로 만들어야 한다!
'코딩테스트 문제' 카테고리의 다른 글
[백준/Python] 이진 검색 트리 (1) | 2024.10.17 |
---|---|
[Python/백준] 트리 순회 (1) | 2024.10.15 |
[백준/Python] 특정한 최단 경로 (1) | 2024.10.09 |
[Python/백준] 운동 (1) | 2024.10.05 |
[Python/백준] 구간 합 구하기 5 (1) | 2024.09.28 |