반응형
문제
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.
출력
첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.
풀이
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
visited = [False] * (n+1)
m = [[] for _ in range(n+1)]
res = [0] * (n+1)
for i in range(n-1):
a, b = map(int,input().split())
m[a].append(b)
m[b].append(a)
def bfs (m, v, visited):
q = deque([v])
visited[v] = True
while q:
x = q.popleft()
for i in m[x]:
if not visited[i]:
q.append(i)
visited[i] = True
res[i] = x
bfs(m, 1, visited)
for i in range(2, n+1):
print(res[i])
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Bronze II #2355 시그마 (0) | 2023.06.04 |
---|---|
[백준/Python] Bronze I #10798 세로읽기 (0) | 2023.06.04 |
[백준/Python] Silver I #1309 동물원 (0) | 2023.06.03 |
[백준/Python] Silver II #15988 1, 2, 3 더하기 3 (0) | 2023.06.03 |
[백준/Python] Bronze II #2605 줄 세우기 (0) | 2023.06.03 |
Comment