| ||||||||||
| 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