코딩/백준

[백준/파이썬/그래프/DFS] 11725번 트리의 부모 찾기 코딩테스트 연습풀이

thisisjade 2022. 7. 1. 13:12
728x90

문제 출처: https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

 

문제

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

 

입력

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

 

출력

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

 

정답

import sys
sys.setrecursionlimit(10**9)

n = int(sys.stdin.readline())
graph = [[] for _ in range(n+1)]
visited = [False for _ in range(n+1)]
answer = [1 for _ in range(n+1)]

def dfs(node):
    visited[node] = True
    for i in graph[node]:
        if not visited[i]:
            answer[i] = node
            dfs(i)
    return

for i in range(n-1):
    a, b = map(int,sys.stdin.readline().rstrip().split())
    graph[a].append(b)
    graph[b].append(a)

dfs(1)

for i in range(2,len(answer)):
    print(answer[i])

dfs로 풀면 쉽게 풀리는 문제였습니다!

2부터 출력해야되기 때문에 for문의 시작값을 2로 세팅하였습니다.

728x90