01-BFS
ダイクストラもBFSでの迷路探索もお気持ちは「一番近い頂点を選んでそこから遷移する」
BFSでの迷路探索で考えます
BFSで使うのは「キュー(FIFO)」
後ろから突っ込んで先頭から取り出す
キューへの数字の出入りを考えた時、途中で中断して中身を見ると{3,3,3,4,4}みたくなってる。
先頭は最小要素
先頭と最後尾の差は最大でも1
「最後尾に追加されるのは必ず先頭+1の値」「元々は{0}」の2つを使うと証明ができそう…?
01-BFSは、BFSのやつに「辺の重みが0」が加わったパターン(これまでは1のみ)
次の頂点への距離が1だった場合、前のBFSと同じように1足して最後尾に突っ込む
次の頂点への距離が0だった場合
いまいる地点はさっきキューから取り出したばかりの「最小要素」
最小要素+0 = 最小要素
キューの先頭に突っ込んじゃって良い
まあキューで先頭に突っ込むのは無理なので、dequeueを使います