def dfs(now):
visited[now] = 1
print(now, end=" ")
for i in range(N+1):
if visited[i] == 0 and node[now][i] == 1:
dfs(i)
def bfs(now):
visited[now] = 1
q.append(now)
while q:
n = q.pop(0)
print(n, end=" ")
for i in range(N+1):
if visited[i] == 0 and node[n][i] == 1:
visited[i] = 1
q.append(i)
N, M, V = map(int, input().split())
node = [[0]*(N+1) for _ in range(N+1)]
visited = [0]*10000000
q = []
for i in range(M):
a, b = map(int, input().split())
node[a][b] = node[b][a] = 1
dfs(V)
visited = [0]*10000000
print()
bfs(V)
문제
- 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성
- 번호가 작은 순서대로 방문
해결방법
- DFS와 BFS
주의사항
- 처음에 dfs에서 범위 설정을 now부터 N+1까지 했는데, 출발 노드 번호가 1이 아닐 수 있으므로 0부터 N+1까지로 해야 한다.