배solved.ac Class 4레벨에 속한 문제이다.
문제 주소: https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해석
루트가 1인 트리의 연결 상태가 주어진다.
루트를 제외한 이 트리의 각 노드의 부모를 구하는 문제이다.
문제 풀이
root인 1을 시작으로 bfs 탐색을 통해 부모 노드를 구해주었다.
문제 코드
import sys
from collections import deque
input = sys.stdin.readline
def solve(n, adj):
# bfs를 통해 root부터 탐색
visit = [0] * (n + 1)
answer = [0] * (n + 1)
# root인 1부터 탐색
q = deque()
q.append(1)
visit[1] = 1
while q:
cur = q.popleft()
for next in adj[cur]:
if visit[next] == 0:
visit[next] = 1
answer[next] = cur
q.append(next)
return answer[2:]
n = int(input())
adj = [[] for _ in range(n + 1)]
for _ in range(n - 1):
a, b = map(int, input().split())
adj[a].append(b)
adj[b].append(a)
print("\n".join(map(str, solve(n, adj))))
제출 결과
'알고리즘 > BOJ' 카테고리의 다른 글
[백준/파이썬] 17144번 미세먼지 안녕! (0) | 2023.02.18 |
---|---|
[백준/파이썬] 11054번 가장 긴 바이토닉 부분 수열 (0) | 2023.02.16 |
[백준/파이썬] 15686번 치킨 배달 (0) | 2023.02.16 |
[백준/파이썬] 9465번 스티커 (0) | 2023.02.15 |
[백준/파이썬] 1991번 트리 순회 (0) | 2023.02.15 |