티스토리 뷰
728x90
https://www.acmicpc.net/problem/11725
- 문제 :
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
- 풀이 :
트리의 루트부터 BFS 또는 DFS로 순회한다. 1인 루트부터 순회하는것이 보장되어 있으므로 현재 탐색중인 노드로부터 방문하지 않은 어떤 노드와 연결관계가 있을 경우 현재 탐색중인 노드가 방문하지 않은 노드의 부모노드가 된다.
- 소스코드 :
from collections import deque
N = int(input())
graph = [[] for _ in range(N+1)]
visited = [0] * (N+1)
for _ in range(N-1):
A, B = map(int,input().split())
graph[A].append(B)
graph[B].append(A)
queue = deque()
queue.append(1)
visited[1] = 1
while queue:
node = queue.popleft()
for i in graph[node]:
if visited[i] == 0:
queue.append(i)
visited[i] = node
for i in visited[2:]:
print(i)
320x100
'Algorithm > DFS & BFS' 카테고리의 다른 글
(Python) - BOJ(1520번) : 내리막 길 (0) | 2022.03.03 |
---|---|
(Python) - BOJ(1967번) : 트리의 지름 (0) | 2022.03.03 |
(Python) - BOJ(2206번) : 벽 부수고 이동하기 (0) | 2022.03.02 |
(Python) - BOJ(12851번) : 숨바꼭질 2 (0) | 2022.03.02 |
(Python) - BOJ(1388번) : 바닥 장식 (0) | 2022.02.22 |
댓글
© 2022 WonSeok, All rights reserved