Thief of Wealth

1. 문제

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

2. 입력

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

3. 출력

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

 

 

유니온파인드같은 방법을 사용하려 했으나 풀리지 않았고, 잠시 쉬고난 후에 풀어보니 dfs로 금방 풀리는 문제였다.

 

<python />
import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline n = int(input().rstrip()) parents = [i for i in range(n+1)] # 자기자신을 부모로하는 정보배열 graph = dict() for i in range(1, n+1): graph[i] = [] for _ in range(n-1): a, b = map(int, input().rstrip().split(" ")) graph[a].append(b) graph[b].append(a) def dfs(curr): global parents, graph for dest in graph[curr]: if(parents[dest] == dest): parents[dest] = curr dfs(dest) def answer(): global parents for i in parents[2:]: print(i) dfs(1) answer()
한번 누르면 2시간동안 보이지 않아요 ㅎㅎ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
원치 않을 경우 를 눌러주세요

'개발 > 알고리즘' 카테고리의 다른 글

[BOJ] 1987 알파벳  (0) 2020.10.25
[BOJ] 2644 촌수계산  (0) 2020.10.24
[BOJ] 2210 숫자펌프  (0) 2020.10.23
[BOJ] 17141 연구소2 파이썬  (0) 2020.10.21
[BOJ] 치킨배달 파이썬  (0) 2020.10.20