
- 양방향 간선 (graph 입력시 주의)
- 여러개의 같은 간선 주어질 수 있음 (방문 체크)
- 정점 번호는 1~N
- 방문할 정점이 여러개면, 작은 숫자부터 방문.
-> 원래 이 순서로 진행돼서 의미 없음.
import sys
from collections import deque
def bfs(p):
queue = deque()
queue.append(p)
visited_[p] = 1
while queue:
p = queue.popleft()
print(p, end=" ")
for idx in range(1, n + 1):
if visited_[idx] == 0 and graph[p][idx] == 1:
queue.append(idx)
visited_[idx] = 1
def dfs(q):
visited[q] = 1
print(q, end=" ")
for idx in range(1, n + 1):
if visited[idx] == 0 and graph[q][idx] == 1:
dfs(idx)
n, m, v = map(int, sys.stdin.readline().split())
visited = [0] * (n + 1)
visited_ = [0] * (n + 1)
graph = list(list(0 for _ in range(n + 1)) for _ in range(n + 1))
for _ in range(m):
i, j = map(int, sys.stdin.readline().split())
graph[i][j] = graph[j][i] = 1
dfs(v)
print()
bfs(v)