hdu 1253 胜利大逃亡_三维

第一次做三维的题,这题跑g++超时了,c++过了.

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
#define N 52
int map[N][N][N],visit[N][N][N],a,b,ttime,c;
struct Node
{
int i,j,k;
int time;
};
int dir[][3]={{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}};
int bfs()
{
Node t,tmp,start;
int i;
queue<Node>q;
start.i=start.j=start.k=1;
start.time=ttime;
q.push(start);
visit[1][1][1]=1;
while(!q.empty())
{
t=q.front();
q.pop();
if(t.i==a&&t.j==b&&t.k==c&&t.time>=0)
return ttime-t.time;
for(i=0;i<6;i++)
{
tmp=t;
tmp.i+=dir[i][0];
tmp.j+=dir[i][1];
tmp.k+=dir[i][2];
tmp.time--;
if(map[tmp.i][tmp.j][tmp.k]==-1||map[tmp.i][tmp.j][tmp.k]==1)
continue;
if(visit[tmp.i][tmp.j][tmp.k])
continue;
if(tmp.i==a&&tmp.j==b&&tmp.k==c)
{
if(tmp.time>=0)
return ttime-tmp.time;
else
return -1;
}
if(tmp.time>=0)
{
q.push(tmp);
visit[tmp.i][tmp.j][tmp.k]=1;
}
}
}
return -1; }
int main()
{
int t,i,j,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&a,&b,&c,&ttime);
memset(visit,0,sizeof(visit));
memset(map,-1,sizeof(map));
for(i=1;i<=a;i++)
for(j=1;j<=b;j++)
for(k=1;k<=c;k++)
scanf("%d",&map[i][j][k]);
printf("%d\n",bfs());
}
return 0;
}
上一篇:tensorflow基础架构 - 处理结构+创建一个线性回归模型+session+Variable+Placeholder


下一篇:eclipse打开时提示:failed to create the java virtual machine