这道题我时间复杂度写残了还以为是常数太大。。。
bfs一下。设f(x,y,i)表示盒子在(x,y)位置,bessie在(x,y)的i方位是否可达。
实际上,这道题虽然bessie可以随便移动,但是导致盒子运动的状态肯定可以用f(x,y,i)描述。
首先计算原点->f(盒子位置,i) 是否可达。可以使用bfs计算,但是要避开箱子。
再计算f(x,y,i)的可达性。
如果要从箱子的一面转到另一面,则把箱子变成障碍物后,必须至少有一条路径不经过箱子到达另一面。
建出点双树后判断即可。
如果要推箱子直接判断有没有障碍物即可。