백준
백준 1260 DFS와 BFS (파이썬)
MC류짱
2022. 11. 29. 21:26
풀이
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탐색하기 적절했음