http://acm.hdu.edu.cn/showproblem.php?pid=1254
推箱子
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
/*
BFS+BFS/DFS,第二个用于判断是否能移动到可以推得位置,因为矩阵很小所以就
DFS也不担心 TLE了,
注意第二组数据,箱子路径可能会重复,所以标记vis要开思维同时记录箱子和人的
位置
*/
using namespace std;
int maze[7][7],move[][2]={0,1,1,0,0,-1,-1,0},dex,dey;
int dvis[7][7];
int m,n;
struct node
{
int px,py,bx,by;
}p;
bool ok(int x,int y)
{
if(x<0||x>=m||y<0||y>=n||maze[x][y]==1)
return 0;
return 1;
}
bool connect(int bx,int by, in