#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
char mapp[15][15][15];
int flag[15][15][15];
int A,B,C,D,E,F,res,N;
int Flag;
struct Node
{
int x,y,z;
int step;
}xx,yy;
void Find()
{
queue<Node>List;
int i;
xx.x=A;
xx.y=B;
xx.z=C;
xx.step=0;
List.push(xx);
while(!List.empty())
{
xx=List.front();
if(xx.x==D&&xx.y==E&&xx.z==F)
{
Flag=1;
res=xx.step;
return ;
}
List.pop();
yy.step=xx.step+1;
for(i=0;i<=5;i++)
{
yy.x=xx.x+dir[i][0];
yy.y=xx.y+dir[i][1];
yy.z=xx.z+dir[i][2];
if(yy.x<=N-1&&yy.y<=N-1&&yy.z<=N-1&&yy.x>=0&&yy.y>=0&&yy.z>=0&&!flag[yy.x][yy.y][yy.z]&&mapp[yy.x][yy.y][yy.z]=='O')
{
flag[yy.x][yy.y][yy.z]=1;
List.push(yy);
}
}
}
}
int main()
{
char s[20];
int i,j,k;
while(~scanf("%s%d",s,&N))
{
Flag=0;
memset(flag,0,sizeof(flag));
getchar();
for(i=N-1;i>=0;i--)
{
for(j=N-1;j>=0;j--)
{
for(k=0;k<N;k++)
scanf("%c",&mapp[k][j][i]);
getchar();
}
}
scanf("%d%d%d",&A,&B,&C);
flag[A][B][C]=1;
scanf("%d%d%d",&D,&E,&F);
scanf("%s",s);
Find();
if(Flag)
{
printf("%d %d\n",N,res);
}
else
printf("NO ROUTE\n");
}
return 0;
}
杭电1240
最新推荐文章于 2020-12-20 02:14:02 发布