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
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 1245번 python 풀이 - DFS (0) | 2023.03.01 |
---|---|
[백준/BOJ] - 1743번 python 풀이 - DFS (0) | 2023.02.28 |
[백준/BOJ] - 2210번 python 풀이 - DFS (0) | 2023.02.27 |
[백준/BOJ] - 15810번 python 풀이 - 이분탐색 (0) | 2023.02.01 |
[백준/BOJ] - 9461번 python 풀이 - DP (0) | 2023.01.04 |