bfs(幅優先探索)のpythonでの実装

pythonでqueueを使いたいときは、listにappendとpop(0)を使えば良い。

あとはwikipediaにあるように

function 幅優先探索(v)
    Q ← 空のキュー
    v に訪問済みの印を付ける
    v を Q に追加
    while Q が空ではない do
        v ← Q から取り出す
        v を処理する
        for each v に接続している頂点 i do
            if i が未訪問 then
                i に訪問済みの印を付ける
                i を Q に追加

に従って実装する。

python3でlistを1行に出力する方法

l = [0,1,2,3,4,5]

というlistで

0 1 2 3 4 5

のように出力したいときは、

print(' '.join(map(str, l)))

とすればよい。

str.join(iterable)

は、iterable中の文字列を結合した文字列を返す。

map()

という関数は、第一引数の関数を第二引数のiterableの要素全てに適用した結果(iterator)を返すので、

list(map(str, l))

['0', '1', '2', '3', '4', '5']

となる。詳しくは下のリンクを参照。

str.join()  ->  4. 組み込み型 — Python 3.6.1 ドキュメント

map()  ->  2. 組み込み関数 — Python 3.6.1 ドキュメント