https://www.acmicpc.net/problem/11725
루트 1부터 시작해서 dfs로 탐색하는 알고리즘으로 풀었다.
방문유무 정보 저장하는 배열을 하나 만들고 방문하지 않았다면 부모노드를 업뎃하면서 dfs탐색하면 된다.
재귀로 한 번 풀고 큐로 한 번 풀었다.
파이썬 코드_재귀 풀이(recursion)
#11725_recursion
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**9)
N = int(input())
tree = [[] for _ in range(N+1)]
for _ in range(N-1):
a, b = map(int, input().split())
tree[a].append(b)
tree[b].append(a)
parent = [0 for _ in range(N+1)] #visited
def dfs(child,tree,parent):
for i in tree[child]:
if parent[i]==0: #unvisited
parent[i]=child #parent update
dfs(i, tree, parent)
dfs(1, tree, parent)
for i in range(2, N+1):
print(parent[i])
파이썬 코드_큐 풀이(queue)
#11725_queue
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
tree= [[] for _ in range(N+1)]
for _ in range(N-1):
a, b = map(int, input().split())
tree[a].append(b)
tree[b].append(a)
parent = [0 for _ in range(N+1)]#visited
queue=[1]#start from root
while queue:
child = queue.pop(0)
for i in tree[child]:
if parent[i]==0:
parent[i]=child #update parent
queue.append(i)
for i in range(2, N+1):
print(parent[i])
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ/알고리즘/파이썬(python)]#9148:신나는 함수 실행[재귀] (0) | 2021.09.13 |
---|---|
[백준/BOJ/알고리즘/파이썬(python)]#1978_소수 찾기[수학/에라토스테네스의 체] (0) | 2021.09.12 |
[백준/BOJ/알고리즘/파이썬(python)]#1197_최소 스패닝 트리[MST/트리/그래프] (0) | 2021.09.11 |
[백준/BOJ/알고리즘/파이썬(python)]#15649,#15650,#15651,#15652_N과M(1)(2)(3)(4)[순열/조합] (0) | 2021.09.10 |
[백준/BOJ/알고리즘/파이썬(Python)]#9372_상근이의 여행[트리/그래프] (0) | 2021.09.10 |