喵~好累呐,搞不出来好难受。。
#include<bits/stdc++.h>
using namespace std;
char a[110][110][110];
int n,m,x,y,z,xx,yy,zz,cnt,vis[110][110][110],ttmp;
int dx[]={1,-1,0,0,0,0},dy[]={0,0,1,-1,0,0},dz[]={0,0,0,0,1,-1};
struct node{
int x,y,z;
};
queue<node> q;
int main(){
cin>>n;
cin>>x>>y>>z>>xx>>yy>>zz;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
cin>>a[j][k][i];
}
}
}
node nod={x,y,z};
vis[x][y][z]=0;
q.push(nod);
while(!q.empty()){
int tmp=0;
node nd=q.front();
for(int i=0;i<6;i++){
int xi=nd.x+dx[i],yi=nd.y+dy[i],zi=nd.z+dz[i];
if(xi<=0||xi>n||yi<=0||yi>n||zi<=0||zi>n||vis[xi][yi][zi]||a[xi][yi][zi]=='1')
continue;
if(xi==xx&&yi==yy&&zi==zz){
tmp=1;
break;
}
vis[xi][yi][zi]=vis[nd.x][nd.y][nd.z]+1;
if(vis[xi][yi][zi]>cnt)
cnt=vis[xi][yi][zi];
nod={xi,yi,zi};
q.push(nod);
}
q.pop();
if(tmp){
ttmp=1;
break;
}
cnt++;
}
if(!ttmp)
cout<<-1;
else
cout<<cnt;
return 0;
}