문제 링크
https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해설
Idea
- BFS
- 1번 노드부터 BFS를 수행하면서 다음 노드에 순차적으로 접근
- 다음 노드가 이미 방문한 노드의 경우 부모 노드라 판단하여 배열에 저장
- 부모 노드가 저장된 배열에 대해 2번 노드부터 순차적으로 부모 노드를 출력
Time Complexity
- O(N+E) = 200,000
Data Size
- N: 2 <= int <= 100,000
해설 코드
from collections import deque
import sys
input = sys.stdin.readline
N = int(input())
graph = [[] for _ in range(N+1)]
visited = [False] * (N+1)
parents = [1] * (N+1)
for _ in range(N-1):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
queue = deque([1])
visited[1] = True
while queue:
node = queue.popleft()
for next in graph[node]:
if not visited[next]:
queue.append(next)
visited[next] = True
else:
parents[node] = next
for parent in parents[2:]:
print(parent)
'Tech > Algorithm' 카테고리의 다른 글
[프로그래머스]다단계 칫솔 판매 (Python) (0) | 2022.08.21 |
---|---|
[백준 1182] 부분수열의 합 (Python) (0) | 2022.08.18 |
[프로그래머스] 쿼드압축 후 개수 세기 (Python) (0) | 2022.08.17 |
[프로그래머스]n^2 배열 자르기 (Python) (0) | 2022.08.16 |
[프로그래머스]n진수 게임 (Python) (0) | 2022.08.16 |