Official
C - Humidifier 3 Editorial
by
C - Humidifier 3 Editorial
by
nok0
この問題は多始点BFSの練習問題です。
グリッドのマスを頂点だと思い、壁でない隣接する二マスを表す頂点間に辺を貼ると、加湿器が置いてあるマスを表す頂点から \(D\) 回以下の移動で到達できる頂点の個数を求める問題となります。
まず、加湿器が置いてあるマスが一つの場合、普通の幅優先探索で解けます。queue に加湿器が置いてあるマスをまず入れます。
次に、queue が非空である限り、queue の先頭の頂点を取り出し、その頂点に隣接していて未訪問のマス全てについて距離を求めて queue に入れることを繰り返せば良いです。
始点が複数ある場合は多始点 bfs と呼ばれますがこの場合もほぼ同様です。はじめに queue に始点の頂点を全て追加しておけば、他は完全に通常の bfs と同じ処理で問題ないです。
計算量は \(\mathrm{O}(HW)\) です。
posted:
last update: