标签:
#include <iostream> #include <cstring> #include <queue> using namespace std; char map[105][105][105]; int visit[105][105][105]; char a[6]; int n; int k1,k2,k3,e1,e2,e3; int to[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; struct node { int x,y,z; int step; }; int go(int x,int y,int z) { if(0<=x&&x<n&&0<=y&&y<n&&0<=z&&z<n&&map[x][y][z]==‘O‘) return 1; return 0; } int bfs() { node st,ed; queue<node> q; st.x=k1; st.y=k2; st.z=k3; st.step=0; memset(visit,0,sizeof(visit)); visit[k1][k2][k3]=1; q.push(st); while(!q.empty()) { st=q.front(); q.pop(); if(st.x==e1&&st.y==e2&&st.z==e3) { cout<<n<<" "<<st.step<<endl; return 0; } for(int i=0;i<6;i++) { ed.x=st.x+to[i][0]; ed.y=st.y+to[i][1]; ed.z=st.z+to[i][2]; if(go(ed.x,ed.y,ed.z)&&visit[ed.x][ed.y][ed.z]==0) { visit[ed.x][ed.y][ed.z]=1; ed.step=st.step+1; q.push(ed); } } } cout<<"NO ROUTE"<<endl; return 0; } int main() { while(cin>>a) { cin>>n; memset(map,0,sizeof(map)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) cin>>map[i][j][k]; cin>>k1>>k2>>k3>>e1>>e2>>e3; map[e1][e2][e3]=‘O‘; cin>>a; bfs(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/nefu929831238/p/5537874.html