티스토리 뷰

반응형

bfs 라는 것을 이해하는데 오래 걸린 문제

문제

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

입력

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

출력

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

구현

# 백준 11725번 트리 부모 찾기
import collections
N = int(input())
tree=collections.defaultdict(list)
for _ in range(N-1):
    a,b = map(int, input().split())
    tree[a].append(b)
    tree[b].append(a)


def bfs(tree, start):
    will_visit=collections.deque([start])
    visited=[]
    mom=collections.defaultdict(int)
    while will_visit:
        travel = will_visit.popleft()# 1
        if travel in visited:
            continue
        else:
            visited.append(travel)
        getter= tree[travel]
        while getter:
            son = getter.pop()
            if mom[son]==0:
                mom[son]=travel
                will_visit.append(son)
            else:
                pass
            
    return mom  


mom  = bfs(tree, 1)
for i in range(2, N+1):
    print(mom[i])
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함