| ||||||||||
| 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 | |||||||||
挺好玩的,三维的bfs#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <queue>
#include <stack>
#include <cmath>
#include <vector>
#include <cstdio>
#include <map>
#include <set>
const int INF = 0x3f3f3f3f;
using namespace std;
char Map[35][35][35];
bool vis[35][35][35];
int dx[]={1,-1,0,0,0,0};
int dy[]={0,0,1,-1,0,0};
int dz[]={0,0,0,0,1,-1};
int x,y,z;
struct node
{
int x,y,z;
int t;
}ans,ant;
bool bfs()
{
ans.t = 0;
queue<node>Q;
Q.push(ans);
vis[ans.x][ans.y][ans.z] = true;
while(!Q.empty())
{
ant = Q.front();Q.pop();
if(Map[ant.x][ant.y][ant.z] == 'E')
{
printf("Escaped in %d minute(s).\n",ant.t);
return false;
}
for(int i=0;i<6;i++)
{
ans.x = ant.x+dx[i];
ans.y = ant.y+dy[i];
ans.z = ant.z+dz[i];
ans.t = ant.t + 1;
if(ans.x>=0&&ans.y>=0&&ans.z>=0&&ans.x<x&&ans.y<y&&ans.z<z&&!vis[ans.x][ans.y][ans.z]&&Map[ans.x][ans.y][ans.z]!='#')
{
Q.push(ans);
vis[ans.x][ans.y][ans.z] = true;
}
}
}
return true;
}
int main()
{
while(~scanf("%d %d %d",&x,&y,&z) && (x||y||z))
{
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
scanf("%s",Map[i][j]);
for(int k=0;k<z;k++)
{
if(Map[i][j][k] == 'S')
{
ans.x = i;ans.y = j;ans.z = k;
}
}
}
}
memset(vis,false,sizeof(vis));
if(bfs())
printf("Trapped!\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator