思路:板子题。具体看代码。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int n,d[6][3]={1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1};
char mp[N][N][N];
int a[N][N][N];
struct p{
int x,y,z;
}s,e;
#define jg(x,y,z) (x>=0&&x<n&&y>=0&&y<n&&z>=0&&z<=n)
int bfs(){
queue<p>q;
q.push({0,0,0});
while(q.size()){
s=q.front();q.pop();
if(s.x==n-1&&s.y==n-1&&s.z==n-1) return a[s.x][s.y][s.z];
for(int i=0;i<6;i++)
{
int nx=s.x+d[i][0],ny=s.y+d[i][1],nz=s.z+d[i][2];
if(jg(nx,ny,nz)&&mp[nx][ny][nz]=='.'){
mp[nx][ny][nz]='*';
a[nx][ny][nz]=a[s.x][s.y][s.z]+1;
q.push({nx,ny,nz});
}
}
}
return -2;
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%s",mp[i][j]);
printf("%d\n", bfs()+1);
return 0;
}