코테풀이/백준

11725번: 트리의 부모 찾기

miimu 2025. 10. 13. 15:57

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

 

입력으로 주어지는 것들이, '처음에 나오는 것이 부모다'라는 말이 없어서 undirectional graph로 트리를 생성했다.

노드 1이 항상 루트이므로, 노드 1에서부터 BFS를 수행하며 노드의 부모를 찾는 것을 목표로 했다.

 

# https://www.acmicpc.net/problem/11725
# Tree, BFS

import sys
from collections import defaultdict, deque

N = int(input())

tree = defaultdict(list)
for _ in range(N-1) :
    a, b = map(int, sys.stdin.readline().split())
    tree[a].append(b)
    tree[b].append(a)

visited = [0] * (N+1)

def BFS() :
    q = deque([1])
    visited[1] = 1

    while q :
        e = q.popleft()

        for v in tree[e] :
            if visited[v] == 0 :
                visited[v] = e
                q.append(v)
                
    for node in range(2, N+1) :
        print(visited[node])

BFS()

 

1번 노드는 visited 0번이 아니라 1번에, 2번 노드는 visited의 2번에 기록하도록 N+1의 길이를 가진 배열을 생성한다.

 

for문에서, BFS 탐색을 시도하는데, visited가 0이라면, visited에 현재 노드 정보를 입력하여 부모 노드가 누군지 기록한다.

이후 BFS를 완료하고 visited의 2번째부터 출력하도록 한다.

'코테풀이 > 백준' 카테고리의 다른 글

13334번: 철로  (0) 2025.10.18
2170번: 선 긋기  (0) 2025.10.18
14725번: 개미굴  (0) 2025.10.10
15681번: 트리와 쿼리  (0) 2025.10.02
2533번: 사회망 서비스(SNS)  (0) 2025.10.01