기록하는삶
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 11725번 _ 트리의 부모 찾기 본문
백준(Python)/그래프, 그래프탐색
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 11725번 _ 트리의 부모 찾기
mingchin 2022. 2. 12. 20:03728x90
반응형
https://www.acmicpc.net/problem/11725
[문제]
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
[입력]
첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.
[출력]
첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.
[아이디어]
1) 1부터 순차적으로 탐색하며 연결된 노드를 살피되, 이미 부모 노드를 찾은 경우와 그렇지 않은 경우를 구분해가며 부모 노드를 결정한다.
2) 노드 순서대로 정렬 후 부모 노드를 출력한다.
import sys
input=sys.stdin.readline
sys.setrecursionlimit(10**6)
n = int(input())
g = [[] for _ in range(n+1)]
for _ in range(n-1):
a,b = map(int,input().split())
g[a].append(b)
g[b].append(a)
d = dict()
def tree(s,g):
if s ==1:
for x in g[s]:
d[x] = 1
tree(x,g)
else:
for x in g[s]:
if x not in d:
d[x] = s
tree(x,g)
tree(1,g)
d = sorted(d.items(),key = lambda x: x[0])
for a,b in d[1:]:
print(b)
728x90
반응형
'백준(Python) > 그래프, 그래프탐색' 카테고리의 다른 글
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 1987번 _ 알파벳 (0) | 2022.02.19 |
---|---|
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 1991번 _ 트리 순회 (0) | 2022.02.13 |
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 13913번 _ 숨바꼭질 4 (0) | 2022.02.10 |
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 13549번 _ 숨바꼭질 3 (0) | 2022.02.10 |
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 1916번 _ 최소비용 구하기 (0) | 2022.02.07 |