[Python] 백준 11725번 트리의 부모 찾기 (BFS/DFS)

Yu Chan Nam·2023년 7월 13일

Problem Solving

목록 보기
7/9

✅ 문제

BOJ 111725번 [트리의 부모 찾기]

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

입력

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

출력

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

💻 코드

import sys
from collections import deque
sys.setrecursionlimit(10**6)
input = sys.stdin.readline


def dfs(v):
    visited[v] = 1
    for i in graph[v]:
        if not visited[i]:
            parent[i] = v
            dfs(i)


n = int(input())
graph = [[] for _ in range(n+1)]
visited = [0]*(n+1)
parent = [0]*(n+1)

for _ in range(n-1):
    s, e = map(int, input().split())
    graph[s].append(e)
    graph[e].append(s)

dfs(1)
print(*parent[2:], sep="\n")

🎯 풀이

  • 각 노드의 부모 노드를 찾는 문제이므로, 그래프 탐색 알고리즘은 BFS/DFS를 통해서 답을 구할 수 있다.

  • 1번 노드를 시작으로 탐색을 해서, 연결된 노드를 차례로 탐색하며 만약 방문하지 않은 노드라면 방문 기록과 부모 노드를 기록하면서 탐색을 한다.

0개의 댓글