标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 21230 | Accepted: 8261 |
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
[Submit] [Go Back] [Status] [Discuss]
#include<stdio.h> #include<string.h> #include<queue> #include<iostream> #include<algorithm> using namespace std; bool vis[100][100][100]; char str[100][100][100]; int step; int nex[6][3]={0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0}; struct node{ int x,y,z; int dis; }; node u,v; int x,y,z; int bfs(){ // printf("--->%d %d %d\n",u.x,u.y,u.z); queue<node>q; q.push(u); vis[u.z][u.x][u.y]=true; while(!q.empty()){ u=q.front(); q.pop(); if(str[u.z][u.x][u.y]==‘E‘) return u.dis; for(int i=0;i<6;i++){ v.x=u.x+nex[i][1]; v.y=u.y+nex[i][2]; v.z=u.z+nex[i][0]; if(str[v.z][v.x][v.y]!=‘#‘&&!vis[v.z][v.x][v.y]&&v.x>=0&&v.x<x&&v.y>=0&&v.y<y &&v.z>=0&&v.z<z){ vis[v.z][v.x][v.y]=true; v.dis=u.dis+1; q.push(v); } } } return 0; } int main(){ while(scanf("%d%d%d",&z,&x,&y)!=EOF){ if(x==0&&y==0&&z==0) break; memset(str,0,sizeof(str)); memset(vis,false,sizeof(vis)); for(int k=0;k<z;k++){ for(int i=0;i<x;i++){ scanf("%s",str[k][i]); for(int j=0;j<y;j++){ if(str[k][i][j]==‘S‘) u.x=i,u.y=j,u.z=k,u.dis=0; } } } step=0; step=bfs(); if(step>0) printf("Escaped in %d minute(s).\n",step); else printf("Trapped!\n"); } return 0; }
poj 2251 Dungeon Master 3维bfs(水水)
标签:
原文地址:http://www.cnblogs.com/13224ACMer/p/4739874.html