[Silver II] Title: 트리의 부모 찾기, Time: 2900 ms, Memory: 69364 KB -BaekjoonHub

This commit is contained in:
SSUM
2025-02-28 20:49:46 +09:00
parent a476986a26
commit 2107c4e8f6
2 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
# [Silver II] 트리의 부모 찾기 - 11725
[문제 링크](https://www.acmicpc.net/problem/11725)
### 성능 요약
메모리: 69364 KB, 시간: 2900 ms
### 분류
그래프 이론, 그래프 탐색, 트리, 너비 우선 탐색, 깊이 우선 탐색
### 제출 일자
2025년 2월 28일 20:43:32
### 문제 설명
<p>루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.</p>
### 입력
<p>첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.</p>
### 출력
<p>첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.</p>

View File

@@ -0,0 +1,40 @@
import sys
from collections import deque
N = int(sys.stdin.readline().rstrip())
arr = []
count = [0] * (N+1)
for i in range(N-1):
a, b = map(int, input().split())
arr.append((a,b))
def adj_arr(edge):
adj_list={}
for u, v in edge:
if u not in adj_list:
adj_list[u] = []
if v not in adj_list:
adj_list[v] = []
adj_list[u].append(v)
adj_list[v].append(u)
return adj_list
new_arr = adj_arr(arr)
def BFS(start, graph):
queue = deque([start])
visited = set([start])
while queue:
value = queue.popleft()
for neighbor in graph[value]:
if neighbor not in visited:
count[neighbor] = value
visited.add(neighbor)
queue.append(neighbor)
BFS(1, new_arr)
for i in range(2, N+1):
print(count[i])