코딩테스트/Python
[Python] 백준 #11725 - 트리의 부모 찾기
yo~og
2022. 1. 15. 23:11
문제
https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
풀이
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def dfs(node):
global parents,tree
for i in tree[node]: # tree[node](node의 부모 or 자식) 을 순회
if parents[i] == 0: # 만약 i의 부모가 아직 지정되지 않았다면
parents[i] = node # node의 자식이므로 i의 부모를 node로 설정
dfs(i) # i를 부모로 가진 노드를 찾기위해 dfs 탐색
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)
parents = [0 for _ in range(n+1)] # 부모 리스트 만들기
parents[1] = 1 # 1의 부모는 1로 설정
dfs(1) # 부모 찾기
print(*parents[2:])
트리를 리스트로 구현하여 푼 방법이다.
dfs로 특정 노드의 부모, 자식의 parents 리스트를 비교하여 부모를 구한다.