<DFS를 이용>
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
n = int(input())
graph = [[] for _ in range(n+1)]
parentNode = [0 for _ in range(n+1)]
for i in range(n-1):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
def dfs(now):
for i in graph[now]:
if parentNode[i] == 0:
parentNode[i] = now
dfs(i)
dfs(1)
for i in parentNode[2:]:
print(i)
<BFS를 이용>
import sys
input = sys.stdin.readline
from collections import deque
n = int(input())
graph = [[] for _ in range(n+1)]
parentNode = [0 for _ in range(n+1)]
for i in range(n-1):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
def bfs():
q = deque()
q.append(1)
while q:
now = q.popleft()
for i in graph[now]:
if parentNode[i] == 0:
parentNode[i] = now
q.append(i)
bfs()
for i in parentNode[2:]:
print(i)
자식노드들의 부모노드를 넣을 리스트를 만들어서 부모노드를 돌며 자식노드가 부모노드 설정이 안 되어 있으면 본인으로 설정해주며 돌면 된다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][Greedy/BFS] 16953. A → B (파이썬/Python) (0) | 2021.12.27 |
---|---|
[백준][DFS/BFS]2644. 촌수계산 (파이썬/Python) (0) | 2021.12.26 |
[백준][DFS] 6118.숨바꼭질 (파이썬/Python) (0) | 2021.12.21 |
[백준][DFS] 10026. 적록색약 (파이썬/Python) (0) | 2021.12.20 |
[백준][Dijkstra/다익스트라] 2206.벽 부수고 이동하기 (파이썬/Python) (0) | 2021.12.17 |