문제풀이/백준(Boj) 문제풀이

[백준][DFS/BFS] 11725.트리의 부모 찾기 (파이썬/Python)

얄루몬 2021. 12. 23. 15:10

<DFS를 이용>

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

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

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

def dfs(now):
    for i in graph[now]:
        if parentNode[i] == 0:
            parentNode[i] = now
            dfs(i)
dfs(1)

for i in parentNode[2:]:
    print(i)

 

<BFS를 이용>

import sys
input = sys.stdin.readline
from collections import deque

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

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

def bfs():
    q = deque()
    q.append(1)
    while q:
        now = q.popleft()
        for i in graph[now]:
            if parentNode[i] == 0:
                parentNode[i] = now
                q.append(i)
    
    
bfs()

for i in parentNode[2:]:
    print(i)

 

자식노드들의 부모노드를 넣을 리스트를 만들어서 부모노드를 돌며 자식노드가 부모노드 설정이 안 되어 있으면 본인으로 설정해주며 돌면 된다.