#include<bits/stdc++.h>
using namespace std;
struct people
{
int x,y,z,time;
}pp,qq;
int K,A,B,C,T,ans;
int square[55][55][55];
int Vis[55][55][55];
int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};
int bfs(int x,int y,int z)
{
pp.x=x;pp.y=y;pp.z=z;pp.time=0;//初始化
queue<struct people>q;
q.push(pp);
Vis[0][0][0]=1;
while(!q.empty())
{
pp=q.front();
q.pop();
if(pp.x==A-1&&pp.y==B-1&&pp.z==C-1&&pp.time<=T){return pp.time;
}
for(int i=0;i<6;i++)
{
qq.x=pp.x+dir[i][0];
qq.y=pp.y+dir[i][1];
qq.z=pp.z+dir[i][2];
if(qq.x>=0&&qq.x<A&&qq.y>=0&&qq.y<B&&qq.z>=0&&qq.z<C&&!square[qq.x][qq.y][qq.z]&&!Vis[qq.x][qq.y][qq.z])
{
qq.time=pp.time+1;
Vis[qq.x][qq.y][qq.z]=1;
q.push(qq);
}
}
}
return -1;
}
int main()
{
scanf("%d",&K);
while(K--)
{
memset(Vis,0,sizeof(Vis));
memset(square,0,sizeof(square));
scanf("%d %d %d %d",&A,&B,&C,&T);
for(int i=0;i<A;i++)
for(int j=0;j<B;j++)
for(int k=0;k<C;k++)
scanf("%d",&square[i][j][k]);
ans=bfs(0,0,0);
printf("%d\n",ans);
}
return 0;
}
总结
1.难道写成函数才能过吗?我不理解