문제 링크
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제
문제해결하기
노드를 생성하여 트리를 구성하는데에 익숙한지라 하나하나 노드를 생성하여 트리를 만들려고 했지만, 노드 당 자식을 설정하는 것이 쉽지않아 실패했다.
그래서 자식노드를 큰 제한없이 설정 가능한 그래프로 접근하기로 했다 ! DFS로 그래프를 순회하면서 부모의 정보를 업데이트 해주었다.
정답코드
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
def DFS(G, v):
visited_D[v] = True
for w in G[v] :
if visited_D[w] == False :
parent[w] = v+1 #부모노드 정보 업데이트
DFS(G,w)
n = int(input())
G = [[] for _ in range(n)] #간선의 정보 저장
parent = [0 for _ in range(n)] #부모노드의 정보 저장
for i in range(n-1) :
a,b = [int(x) for x in input().split()]
G[a-1].append(b-1)
G[b-1].append(a-1)
visited_D = [False]*n
DFS(G,0)
for i in range(1,n): #루트노드를 제외한 각 노드의 부모노드 출력
print(parent[i])
▶ sys.setrecursionlimit(10**6)을 통해 재귀의 깊이를 늘려주었다.
▶빠른 입력을 위해 sys.stdin.readline !
'Baekjoon > 트리' 카테고리의 다른 글
[백준] 1991번, 트리 순회 | (python,파이썬) (0) | 2021.07.28 |
---|---|
[백준] 1167번, 트리의 지름 | (python,파이썬) (0) | 2021.07.28 |