본문 바로가기
백준 풀이

[백준/BOJ] - 11725번 python 풀이 - DFS

by 반오십 코린이 2023. 2. 27.
728x90


1. 방문 여부 확인 노드를 true, false로 정하지 말고 0으로 기본값을 정해 놓고 그래프 탐색하며 해당 노드를 방문했을 경우 그의 부모 노드를 해당 visited 값에 등록해준다.

 

2. 스타트는 항상 1번부터 시작해야 하므로 dfs(1)을 한번 호출해준다.

 

3. 순차적으로 탐색되는 노드를 기반으로 재귀적 호출을 진행한다.


import sys
sys.setrecursionlimit(100000)
input = sys.stdin.readline
n= int(input())
arr= [[] *0 for i in range(n+1)] #n이 7이면 7까지 0~7
visited = [0] * (n+1) #8개 만들기 0~7

def dfs(s):
    for i in arr[s]:
        if visited[i] == 0:
            visited[i] = s
            dfs(i)

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

dfs(1)

for i in range(2,n+1): #2~7
    print(visited[i])
728x90