반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 11725번 트리의 부모 찾기 파이썬(Python)

1) 문제번호 : 11725번

 

2) 문제 출처

https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

 

2. 문제

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

 

3. 제약사항


4. 입력

첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.

 

5. 출력

첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.

 

6. 풀이

- DFS 간단한 문제.

- 여기서 주의해야 할 점은 반복제한을 늘려줘야 한다.

- 기본적으로, 반복은 1000회로 되어 있기 때문에, sys.setrecursionlimit(10**9)로 늘려줬다.

 

7. 소스 코드

import sys
input=sys.stdin.readline
sys.setrecursionlimit(10**9)

N = int(input()) # 노드의 개수

# 트리
Tree = [[] for _ in range(N+1)]

#부모 노드 저장
Parents = [0 for _ in range(N+1)]

# 트리 구조 입력
for _ in range(N-1) :
    a, b = map(int, input().split())
    Tree[a].append(b)
    Tree[b].append(a)

def DFS(start, tree, parents) :
    # 연결된 노드들부터 parents[i]의 부모가 없으면 부모 설정 해주고, DFS 돌린다.
    for i in tree[start] :
        if parents[i] == 0 :
            parents[i] = start
            DFS(i, tree, parents)

DFS(1, Tree, Parents)

for i in range(2, N+1) :
    print(Parents[i])

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기