반응형
알고리즘 분류
- 그래프 이론
- 그래프 탐색
- 트리
- 너비 우선 탐색
- 깊이 우선 탐색
SOLUTION
import sys
from collections import deque
def dfs(): # 깊이 우선 탐색 활용
queue = deque([1]) # 트리의 루트가 1번이므로 1번 노트부터 시작
while queue: # 트리에 연결된 노드들을 전부 탐색
node = queue.popleft()
for i in graph[node]:
if not visited[i]: # 방문하지 않은 노드일때
# queue에 다시 넣어줘서 넣어준 노드부터 다시 탐색 될 수 있도록 함
queue.append(i)
# queue에 넣어준 노드의 부모노드는 현재 노드와 같음
parent[i] = node
# 이미 방문한 노드는 다시 탐색할 필요가 없기 때문에 방문처리를 함
visited[i] = True
N = int(sys.stdin.readline())
graph = [[] for _ in range(N+1)]
visited = [False] * (N+1)
parent = [0] * (N+1)
for _ in range(N-1):
n1, n2 = map(int, sys.stdin.readline().split())
graph[n1].append(n2)
graph[n2].append(n1)
dfs()
print(*parent[2:], sep="\n") # 2번 노드부터 부모 노드 출력
'코딩테스트 대비 > BOJ' 카테고리의 다른 글
[Baekjoon/Python] 15666번: N과 M (12) - 효과는 굉장했다! (0) | 2022.03.28 |
---|---|
[Baekjoon/Python] 15663번: N과 M (9) - 효과는 굉장했다! (0) | 2022.03.28 |
[Baekjoon/Python] 11053번: 가장 긴 증가하는 부분 수열 - 효과는 굉장했다! (0) | 2022.03.28 |
[Baekjoon/Python] 16236번: 아기상어 - 효과는 굉장했다! (0) | 2022.03.28 |
[Baekjoon/Python] 15657번: N과 M (8) - 효과는 굉장했다! (0) | 2022.03.14 |