링크: DFS와 BFS
from collections import deque
n,m,start = map(int, input().split())
graph=[[] for i in range(n+1)]
visited=[False]*(n+1)
for i in range(m):
s,e = map(int, input().split())
graph[s].append(e)
graph[e].append(s) #양방향
for line in graph:
line.sort()
#dfs 함수
def dfs(start):
visited[start]=True
print(start, end=' ')
for v in graph[start]:
if visited[v]==False:
dfs(v)
#bfs 함수
def bfs(start):
queue = deque()
visited[start] = True
queue.append(start)
while queue:
v = queue.popleft()
print(v,end=' ')
for i in graph[v]:
if visited[i]==False:
visited[i]=True
queue.append(i)
dfs(start)
visited=[False]*(n+1)
print()
bfs(start)
단순히 DFS와 BFS를 구현하면 되는 문제였다.
입력으로 한 줄에 연결되어 있는 두 정점을 주었기 때문에
인접 리스트 방식으로 바꿔주기 위한 처리 + 양방향 그래프로 변경해주었다.
그리고 리스트 정렬도 추가적으로 수행해 숫자가 작은 노드부터 탐색할 수 있도록 하였다. 굿~