渡り廊下の両端は高々2M個なので、頂点数はO(M)で抑えられる。渡り廊下に関しては定義通りに普通に辺を張ればよい。問題になるのが同じ棟内での移動で、ここを愚直にやろうとすると辺の数がO(M2)になってしまうが、実はそんなことをする必要はなく、各頂点から見て同じ棟の上下でそれぞれ一番近い階だけに辺を張ればよい(それより遠くに行く場合でもそこは絶対通るので)。これで辺の数もO(M)になる。ダイクストラを回すとO(MlogM)。N行無限列の2次元グリッドがある。(1)はてなブログをはじめよう!fluffyowlさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。