幅優先探索(bfs)のpythonでの実装
・参考:
BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita
・内容:上の記事を参考にpythonでBFSを書いた。queueはcollectionsのdequeのほうが早いらしい。dequeはque=deque() #que.append(i)でappend,que.popleft()で左を取り出してキューから左の要素が消える。
queueはque=queue.Queue() #que.put(i),que.get()で同じことができる。
・実装:頂点0からの距離distを求めるもの。
from collections import deque import queue N,M=map(int,input().split()) #頂点数と辺の数 G=[[] for _ in range(M)] for _ in range(M): a,b=map(int,input().split()) G[a].append(b) G[b].append(a) dist=[-1 for _ in range(N)] #未探索なら-1 #que=deque() que=queue.Queue() dist[0]=0 que.put(0) while que.qsize()!=0: v=que.get() #vからいけるところがnv for nv in G[v]: if dist[nv]!=-1: continue dist[nv]=dist[v]+1 que.put(nv) for i in range(N): print(i,dist[i])