[Silver II] Title: 트리의 부모 찾기, Time: 2900 ms, Memory: 69364 KB -BaekjoonHub
This commit is contained in:
28
백준/Silver/11725. 트리의 부모 찾기/README.md
Normal file
28
백준/Silver/11725. 트리의 부모 찾기/README.md
Normal 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>
|
||||
|
||||
40
백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py
Normal file
40
백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py
Normal 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])
|
||||
Reference in New Issue
Block a user