| ||||||||||
| 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啊~discuss里的数据也过了~
队列也清空了~就是不知道为什么老是WA啊~
#include"iostream"
#include"queue"
#include"cstdio"
#include"cstring"
using namespace std;
struct NODE
{
char a;
int length;
int x,y,z;
} map[35][35][35],temp,start,tex;
int i,j,k;
queue<NODE>Que;
bool visited[35][35][35];
int L,R,C;
int s[6][3]={{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}};
int bfs()
{
while(!Que.empty())
Que.pop();
memset(visited,false,sizeof(visited));
for(k=0;k<L;k++)
for(j=0;j<R;j++)
for(i=0;i<C;i++)
if(map[i][j][k].a=='S')
{
start=map[i][j][k];
start.x=i;
start.y=j;
start.z=k;
Que.push(start);
visited[i][j][k]=true;
start.length=0;
break;
}
for(;;)
{
temp=Que.front();
Que.pop();
temp.a=map[temp.x][temp.y][temp.z].a;
for(i=0;i<6;i++)
{
tex.x=temp.x+s[i][0];
tex.y=temp.y+s[i][1];
tex.z=temp.z+s[i][2];
if(map[tex.x][tex.y][tex.z].a=='.'&&visited[tex.x][tex.y][tex.z]==false)
{
tex.length=temp.length+1;
visited[tex.x][tex.y][tex.z]=true;
Que.push(tex);
}
if(map[tex.x][tex.y][tex.z].a=='E')
return temp.length+1;
}
if(Que.empty())
return temp.length;
}
}
int main()
{
int tt;
while(scanf("%d%d%d",&L,&R,&C),L!=0)
{
for(k=0;k<L;k++)
for(j=0;j<R;j++)
for(i=0;i<C;i++)
scanf(" %c",&map[i][j][k].a);
tt=bfs();
if(tt!=0)
printf("Escaped in %d minute(s).\n",tt);
else
printf("Trapped!\n");
for(k=0;k<L;k++)
for(j=0;j<R;j++)
for(i=0;i<C;i++)
map[i][j][k].a='#';
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator