GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이

Baekjoon Online Judge 11725번 파이썬

gogi masidda 2022. 9. 1. 17:38

문제 링크
https://www.acmicpc.net/problem/11725

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net


처음에 parent 배열을 모두 -1로 두고 시작했다.
그리고 for i in Tree[start]를 하면서 자식들을 만날 때마다, parent배열에 부모를 할당해주었다.

트리의 루트는 1이므로 dfs(1)을 해주었다.

정답 코드

import sys
sys.setrecursionlimit(10 ** 6)

N = int(sys.stdin.readline())

Tree = []
Tree = [[]* (N+1) for i in range(N+1)]

for i in range(N-1):
  a, b = map(int,sys.stdin.readline().split())
  Tree[a].append(b)
  Tree[b].append(a)
  
def dfs(start):
  global parent
  for i in Tree[start]:
    if parent[i] == -1:
      parent[i] = start
      dfs(i)
  
parent = [-1] * (N+1)

dfs(1)
for i in range(2,N+1):
  print(parent[i])
728x90