INK study
article thumbnail

https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

문제

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

입력

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

출력

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

 

 

7
1 6
6 3
3 5
4 1
2 4
4 7
4
6
1
3
1
4

풀이

예제

- DFS 이므로 재귀를 사용한다.

- 1 부터 체크하면 된다

- 그래프 1부터 연결된 노드들을 체크하고 visited 가 0인 노드에 대해서 visited를 v로 지정한다. 그후 dfs를 또다시 진행한다.

- 백준에 제출할 때, recursionlimit을 정해주어야 에러가 발생하지 않는다.

코드

 

import sys
sys.setrecursionlimit(10 ** 8)
n = int(sys.stdin.readline())
graph = [[] for i in range (n+1)]
visited = [0 for _ in range (n+1)]
for i in range (n-1):
    a,b = map(int, sys.stdin.readline().split())
    graph[a].append(b)
    graph[b].append(a)
def dfs(v):
    for x in graph[v]:
        if visited[x] == 0:
            visited[x] = v
            dfs(x)
dfs(1)
for i in range (2,n+1):
    print(visited[i])

'Coding Test > Baekjoon' 카테고리의 다른 글

[백준/BFS] 1325번 - 효율적인 해킹 (Python)  (0) 2024.03.27
[BJ] 10773 - 제로[Java]  (0) 2023.04.27
[백준] 백준 1979번 소수찾기  (0) 2022.06.24
profile

INK study

@ongsimi_

읽어주셔서 감사합니다!