풀이
import sys; from collections import defaultdict, deque
def dfs(u):
global dfs_lst
if u in visit_dfs:
return
dfs_lst.append(u)
visit_dfs.add(u)
for v in G[u]:
dfs(v)
def bfs(u):
global bfs_lst
Q = deque()
Q.append(u)
visit_bfs.add(u)
bfs_lst.append(u)
while Q:
u = Q.popleft()
for v in G[u]:
if v not in visit_bfs:
visit_bfs.add(v)
bfs_lst.append(v)
Q.append(v)
N, M, V = map(int, sys.stdin.readline().strip().split())
G = defaultdict(list)
for _ in range(M):
a, b = map(int, sys.stdin.readline().strip().split())
G[a].append(b)
G[b].append(a)
for lst in G.values():
lst.sort()
visit_dfs = set()
visit_bfs = set()
dfs_lst = []
bfs_lst = []
dfs(V)
bfs(V)
print(*dfs_lst)
print(*bfs_lst)
후기
- 그래프 탐색하는 간단한 문제
- 오랜만의 알고리즘 풀이로 기본적인 dfs, bfs탐색하기 적절했음
'백준' 카테고리의 다른 글
백준 2164 카드2 (파이썬) (0) | 2022.12.01 |
---|---|
백준 14503 로봇 청소기 (파이썬) (0) | 2022.11.29 |
백준 2493 탑 (파이썬) (0) | 2022.11.14 |
백준 6549 히스토그램에서 가장 큰 직사각형 (파이썬) (0) | 2022.11.13 |
백준 13305 주유소 (파이썬, 자바) (0) | 2022.11.10 |