From 2107c4e8f63df9a4bc7cf394f8f0a4460dcb4825 Mon Sep 17 00:00:00 2001 From: SSUM <116950962+ssum21@users.noreply.github.com> Date: Fri, 28 Feb 2025 20:49:46 +0900 Subject: [PATCH] =?UTF-8?q?[Silver=20II]=20Title:=20=ED=8A=B8=EB=A6=AC?= =?UTF-8?q?=EC=9D=98=20=EB=B6=80=EB=AA=A8=20=EC=B0=BE=EA=B8=B0,=20Time:=20?= =?UTF-8?q?2900=20ms,=20Memory:=2069364=20KB=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 백준/Silver/11725. 트리의 부모 찾기/README.md | 28 +++++++++++++ .../11725. 트리의 부모 찾기/트리의 부모 찾기.py | 40 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 백준/Silver/11725. 트리의 부모 찾기/README.md create mode 100644 백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py diff --git a/백준/Silver/11725. 트리의 부모 찾기/README.md b/백준/Silver/11725. 트리의 부모 찾기/README.md new file mode 100644 index 0000000..0058466 --- /dev/null +++ b/백준/Silver/11725. 트리의 부모 찾기/README.md @@ -0,0 +1,28 @@ +# [Silver II] 트리의 부모 찾기 - 11725 + +[문제 링크](https://www.acmicpc.net/problem/11725) + +### 성능 요약 + +메모리: 69364 KB, 시간: 2900 ms + +### 분류 + +그래프 이론, 그래프 탐색, 트리, 너비 우선 탐색, 깊이 우선 탐색 + +### 제출 일자 + +2025년 2월 28일 20:43:32 + +### 문제 설명 + +

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

+ +### 입력 + +

첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.

+ +### 출력 + +

첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.

+ diff --git a/백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py b/백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py new file mode 100644 index 0000000..25e00cd --- /dev/null +++ b/백준/Silver/11725. 트리의 부모 찾기/트리의 부모 찾기.py @@ -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]) \ No newline at end of file