| ||||||||||
| 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 | |||||||||
忘了加getchar()了,害我WA了2次。。。。附代码参考。。。#include<iostream>
#include<algorithm>
#include<queue>
#include<string.h>
using namespace std;
char map[66][66][66];
bool visit[66][66][66];
int op[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int n,m,k;
typedef struct note
{
int x;
int y;
int z;
int step;
}S;
int BFS(int a,int b,int c)
{
S s;
s.x=a;
s.y=b;
s.z=c;
s.step=0;
queue<S> q;
q.push(s);
while(!q.empty())
{
S temp,ts;
ts=q.front();
q.pop();
for(int i=0;i<6;i++)
{
temp.x=ts.x+op[i][0];
temp.y=ts.y+op[i][1];
temp.z=ts.z+op[i][2];
temp.step=ts.step+1;
if(!visit[temp.x][temp.y][temp.z]&&map[temp.x][temp.y][temp.z]!='#')
{
visit[temp.x][temp.y][temp.z]=true;
if(map[temp.x][temp.y][temp.z]=='E')
return temp.step;
q.push(temp);
}
}
}
return -1;
}
int main()
{
int ans,i,j,pn,pm,pk;
while(~scanf("%d%d%d",&n,&m,&k))
{
if(!n&&!m&&!k) break;
memset(visit,0,sizeof(visit));
memset(map,'#',sizeof(map));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
for(int o=1;o<=k;o++)
{
cin>>map[i][j][o];
if(map[i][j][o]=='S')
{
pn=i;
pm=j;
pk=o;
}
}
getchar();
}
ans=BFS(pn,pm,pk);
if(ans==-1)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",ans);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator