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 |
一次性过,感觉不错哦!!!#include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; class point { public: int l , r , c ; }; int l , r , c ; char dungeon[50][50][50]; int visit[50][50][50]; int b_l , b_r , b_c , e_l , e_r , e_c ; void bfs() { int direct[6][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}}; queue<point> Q ; point push , temp ; visit[b_l][b_r][b_c] = 0; push.l = b_l ; push.r = b_r ; push.c = b_c ; Q.push(push) ; while(!Q.empty()) { temp = Q.front(); if(temp.l == e_l && temp.r == e_r && temp.c == e_c) return ; for(int i = 0; i < 6; i ++) { push.l = temp.l + direct[i][0] ; push.r = temp.r + direct[i][1] ; push.c = temp.c + direct[i][2] ; if(dungeon[push.l][push.r][push.c] == '.' && visit[push.l][push.r][push.c] == -1) { visit[push.l][push.r][push.c] = visit[temp.l][temp.r][temp.c] + 1; Q.push(push) ; } } Q.pop(); } } int main() { freopen("in.txt","r",stdin); int i , j , k ; while(1) { cin>>l>>r>>c; if(!l && !r && !c) break ; memset(dungeon,'#',sizeof(dungeon)); memset(visit,-1,sizeof(visit)); for(i = 1; i <= l; i++) for(j = 1; j <= r; j++) for(k = 1; k <= c; k++) { cin>>dungeon[i][j][k]; if(dungeon[i][j][k] == 'S') { b_l = i ; b_r = j ; b_c = k ; } if(dungeon[i][j][k] == 'E') { e_l = i ; e_r = j ; e_c = k ; dungeon[i][j][k] = '.' ; } } bfs(); if(visit[e_l][e_r][e_c] != -1) cout<<"Escaped in "<<visit[e_l][e_r][e_c]<<" minute(s)."<<endl; else cout<<"Trapped!"<<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