ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 1140 - Cleaning Robot

問題
提出コード

解法

基本的にはBFSをしていけばよいです。
dis[i][j][S] = (i,j)にいるときに、掃除済みの汚れたタイルの状態がSになるような掃除の手順の中での最短手順
とします。
汚れたタイルは高々10枚なので、掃除済みかどうかの情報をbitで持っても、1024通り程度にしかなりません。
あとは、現在のマスから4方向それぞれに進み、BFSをしていくことで答えを求めることができます。マス目を一回走査して、汚れたタイルやスタート地点を探す部分が少々面倒ですが、その部分さえ書ければあとは基本的にいつものBFS…です。

感想

初期化とスタート地点の情報の記録をいっぺんに行ったので、バグを埋め込みました。
考察自体はさっとできたので良かったと思います。