Великі камери піраміди Хеопса#11848

Однозначно описати поточне положення героя недостатньо: потрібно знати, які саме k\;(0\le k\le 6) скарабеїв уже зібрано. Зафіксуємо це бітовою маскою mask\in[0,2^{6}), де -й біт установлено, якщо скарабей 'a'+i вже в Індіани. Таким чином, стан — це трійка

(x,y,mask),\qquad 1\le x\le n,\;1\le y\le m,\;0\le mask<64.

Шукатимемо найкоротший шлях звичайним пошуком у ширину (BFS), бо всі переходи рівновагові (вага ).

Зі стану (x,y,mask) розглядаємо чотири сусідні клітинки (x',y'):

Після вичерпання черги:

\texttt{ans} = \min_{mask} dist[n][m][mask].

Якщо \texttt{ans}<\infty, це відповідає мінімальній кількості кроків; інакше виводимо . Загальна часова складність O(2^6nm).