Push a Box

这道题我时间复杂度写残了还以为是常数太大。。。

bfs一下。设f(x,y,i)表示盒子在(x,y)位置,bessie在(x,y)的i方位是否可达。

实际上,这道题虽然bessie可以随便移动,但是导致盒子运动的状态肯定可以用f(x,y,i)描述。

首先计算原点->f(盒子位置,i) 是否可达。可以使用bfs计算,但是要避开箱子。

再计算f(x,y,i)的可达性。

如果要从箱子的一面转到另一面,则把箱子变成障碍物后,必须至少有一条路径不经过箱子到达另一面。

建出点双树后判断即可。

如果要推箱子直接判断有没有障碍物即可。

原文地址:https://www.cnblogs.com/cszmc2004/p/13060823.html