A.Jelly (简单BFS&三维)

思路:板子题。具体看代码。

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;
}