728x90
문제 출처: https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.
출력
첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.
정답
import sys
sys.setrecursionlimit(10**9)
n = int(sys.stdin.readline())
graph = [[] for _ in range(n+1)]
visited = [False for _ in range(n+1)]
answer = [1 for _ in range(n+1)]
def dfs(node):
visited[node] = True
for i in graph[node]:
if not visited[i]:
answer[i] = node
dfs(i)
return
for i in range(n-1):
a, b = map(int,sys.stdin.readline().rstrip().split())
graph[a].append(b)
graph[b].append(a)
dfs(1)
for i in range(2,len(answer)):
print(answer[i])
dfs로 풀면 쉽게 풀리는 문제였습니다!
2부터 출력해야되기 때문에 for문의 시작값을 2로 세팅하였습니다.
728x90
'코딩 > 백준' 카테고리의 다른 글
[백준/파이썬/DP] 11055번 가장 큰 증가 부분 수열 코딩테스트 연습풀이 (0) | 2022.07.03 |
---|---|
[백준/파이썬/자료구조] 1935번 후위 표기식2 코딩테스트 연습풀이 (0) | 2022.07.02 |
[백준/파이썬/DP] 9465번 스티커 코딩테스트 연습풀이 (0) | 2022.06.30 |
[백준/파이썬/브루트포스] 18111번 마인크래프트 코딩테스트 연습풀이 (0) | 2022.06.30 |
[백준/파이썬/자료구조] 1302번 베스트셀러 코딩테스트 연습풀이 (0) | 2022.06.29 |