题目:http://poj.org/problem?id=2251
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include2 #include 3 #include 4 #define pan(a,b,c) (a<=b&&b<=c) 5 using namespace std; 6 int dir[6][3]={ { 0,0,-1},{ 0,0,1},{-1,0,0},{ 1,0,0},{ 0,-1,0},{ 0,1,0}}; 7 int ex,ey,ez; 8 char str[35][35][35]; 9 int map[35][35][35];10 struct node11 {12 int x,y,z;13 int num;14 }que[30010];15 int main()16 {17 int m,n,t;18 int i,j,k;19 int sx,sy,sz;20 while(scanf("%d%d%d%*c",&t,&m,&n)!=EOF)21 {22 if(t==0&&m==0&&n==0)23 break;24 for(i=1;i<=t;i++)25 {26 for(j=1;j<=m;j++)27 {28 for(k=1;k<=n;k++)29 {30 cin>>str[i][j][k];31 if(str[i][j][k]=='S')32 {33 sx=i;34 sy=j;35 sz=k;36 }37 }38 }39 }40 memset(map,0,sizeof(map));41 int head=0;42 int tail=1;43 que[0].x=sx;44 que[0].y=sy;45 que[0].z=sz;46 que[0].num=0;47 map[sx][sy][sz]=1;48 int xx,yy,zz;49 int flag=0;50 while(head