标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 17555 | Accepted: 6835 |
Description
Input
Output
Escaped in x minute(s).
Trapped!
Sample Input
3 4 5 S.... .###. .##.. ###.# ##### ##### ##.## ##... ##### ##### #.### ####E 1 3 3 S## #E# ### 0 0 0
Sample Output
Escaped in 11 minute(s). Trapped!
Source
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 31 const int inf=0x7fffffff; //无限大 int visited[maxn][maxn][maxn]; struct node { int x; int y; int z; int cnt; }; int dx[6]={1,-1,0,0,0,0}; int dy[6]={0,0,1,-1,0,0}; int dz[6]={0,0,0,0,1,-1}; int main() { int n,m,k; string s; while(cin>>n>>m>>k) { if(n==0&&m==0&&k==0) break; memset(visited,0,sizeof(visited)); node sb; node sb2; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>s; for(int t=0;t<k;t++) { if(s[t]==‘S‘) { sb.x=i; sb.y=j; sb.z=t; sb.cnt=0; } if(s[t]==‘E‘) { sb2.x=i; sb2.y=j; sb2.z=t; } if(s[t]==‘#‘) { visited[i][j][t]=1; } } } } queue<node> q; q.push(sb); visited[sb.x][sb.y][sb.z]=1; int flag=0; while(!q.empty()) { node now=q.front(); for(int i=0;i<6;i++) { node next; next.x=now.x+dx[i]; next.y=now.y+dy[i]; next.z=now.z+dz[i]; next.cnt=now.cnt+1; if(next.x<0||next.x>=n||next.y<0||next.y>=m||next.z<0||next.z>=k) continue; if(visited[next.x][next.y][next.z]) continue; visited[next.x][next.y][next.z]=1; if(next.x==sb2.x&&next.y==sb2.y&&next.z==sb2.z) flag=next.cnt; if(flag>0) break; q.push(next); } if(flag>0) break; q.pop(); } if(flag>0) printf("Escaped in %d minute(s).\n",flag); else cout<<"Trapped!"<<endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/qscqesze/p/4245128.html