Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
晕死,没清空队列,wa了一下#include<iostream> #include <cstring> #include <queue> using namespace std; char map[55][55][55]; int step[55][55][55]; typedef struct coordinate { int x,y,l; }coor; queue<coor> searchline; int BFS(int i,int j,int k) { coor C; C.x=i; C.y=j; C.l=k; searchline.push(C); while(!searchline.empty()) { coor temp=searchline.front(); searchline.pop(); if(map[temp.x][temp.y][temp.l]=='E') return step[temp.x][temp.y][temp.l]; if(map[temp.x-1][temp.y][temp.l]!='#' && !step[temp.x-1][temp.y][temp.l]) { coor t(temp); --t.x; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } if(map[temp.x+1][temp.y][temp.l]!='#' && !step[temp.x+1][temp.y][temp.l]) { coor t(temp); ++t.x; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } if(map[temp.x][temp.y-1][temp.l]!='#' && !step[temp.x][temp.y-1][temp.l]) { coor t(temp); --t.y; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } if(map[temp.x][temp.y+1][temp.l]!='#' && !step[temp.x][temp.y+1][temp.l]) { coor t(temp); ++t.y; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } if(map[temp.x][temp.y][temp.l-1]!='#' && !step[temp.x][temp.y][temp.l-1]) { coor t(temp); --t.l; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } if(map[temp.x][temp.y][temp.l+1]!='#' && !step[temp.x][temp.y][temp.l+1]) { coor t(temp); ++t.l; searchline.push(t); step[t.x][t.y][t.l]=step[temp.x][temp.y][temp.l]+1; } } return -1; } int main() { int L,R,C; while(cin>>L>>R>>C && (L || R ||C )) { while(!searchline.empty())searchline.pop(); memset(map,'#',sizeof(map)); memset(step,0,sizeof(step)); int s_i,s_j,s_l,e_i,e_j,e_l; for(int k=1;k<=L;++k) { for(int i=1;i<=R;++i) { for(int j=1;j<=C;++j) { cin>>map[i][j][k]; if(map[i][j][k]=='S')s_i=i,s_j=j,s_l=k; if(map[i][j][k]=='E')e_i=i,e_j=j,e_l=k; } } } int ans=BFS(s_i,s_j,s_l); if(ans==-1)cout<<"Trapped!"<<endl; else cout<<"Escaped in "<<ans<<" minute(s)."<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator