BFS 다시 정리할 겸 기본문제를 풀어보았다.
해당 그림과 같이 연결된다. 코드를 아래와 같이 나타낼 수 있다. 반드시 sort를 해줘야 탐색이 안꼬인다.
from collections import deque
def bfs(lis, start, visit):
que = deque([start])
visit[start] = 1
cnt = 2
while que:
top = que.popleft()
for i in lis[top]: # 최상단 노드에 대한 연결된 노드
if not visit[i]: # 연결된 i가 방문되지 않았다면
que.append(i)
visit[i] = cnt #visit에 방문 횟수를 넣음
cnt += 1 # cnt
n, m, r = map(int, input().split())
lis = [[] for _ in range(n+1)]
visit = [0] * (n+1)
for i in range(m):
a, b = map(int, input().split())
lis[a].append(b)
lis[b].append(a) # 양방향간선
for i in range(n+1):
lis[i].sort() # 배열 정렬 필요
bfs(lis, r, visit)
for i in visit[1::]:
print(i)