링크 : https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
- 문제
- 소요시간: 10분 7초
- 설계하기(접근방법)
1. 입력받기
노드와 간선을 입력받는다
2. 구현하기
1부터 노드를 bfs로 순회하면서
자식 노드 번호에 부모 노드 번호를 저장한다
3. 출력하기
2번 노드부터 부모 노드를 출력한다
- 코드(출력)
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
graph = [[] for _ in range(n + 1)]
visited = [0 for _ in range(n + 1)]
for _ in range(n-1):
p, c = map(int, input().split())
graph[p].append(c)
graph[c].append(p)
def bfs(start):
q = deque()
visited[start] = -1
q.append(start)
while q:
x = q.popleft()
for i in graph[x]:
if visited[i] == 0:
visited[i] = x
q.append(i)
bfs(1)
for i in visited[2:]:
print(i)
- 얻어갈 부분
1. 이전의 트리의 지름 문제보다 많이 쉬웠다. 방문한 노드의 전 노드를 저장하면 되는 문제다.
'알고리즘(백준) > BFS & DFS' 카테고리의 다른 글
[알고리즘/BFS] 18352번 : 특정 거리의 도시 찾기 - python (0) | 2024.10.10 |
---|---|
[알고리즘/BFS] 16234번 : 인구 이동 - python (0) | 2024.02.22 |
[알고리즘/BFS & DFS] 1967번 : 트리의 지름 - python (0) | 2024.02.04 |
[알고리즘/BFS & DFS] 7576번 : 토마토 - python (1) | 2024.02.03 |
[알고리즘/BFS & DFS] 6593번 : 상범 빌딩 - python (0) | 2024.02.03 |