http://acm.hdu.edu.cn/showproblem.php?pid=1072
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cstdlib>
/*
求最短步数,BFS,剪枝的时候注意,这里有时间的限制,故用vis[x][y][time]三维数组
来标记
*/
using namespace std;
struct node
{
int x,y,time,step;
}s,p;
bool operator<(node a,node b)
{
return a.step>b.step;
}
int m,n,maze[8][8],vis[8][8][7];
int next[4][2]={1,0,0,1,0,-1,-1,0};
int bfs(node s)
{
priority_queue<node,vector<node> > que;
que.push(s);
while(!que.empty())
{
s=que.top();
que