求助题目
  • 板块灌水区
  • 楼主tian_jun_cheng
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/8 16:07
  • 上次更新2023/10/28 07:02:24
查看原帖
求助题目
377434
tian_jun_cheng楼主2022/3/8 16:07

http://ybt.ssoier.cn:8088/problem_show.php?pid=1248

#include<bits/stdc++.h>
using namespace std;
const int dx[6]={1,0,-1,0,0,0};
const int dy[6]={0,1,0,-1,0,0};
const int dz[6]={0,0,0,0,1,-1};
char c[30][30][30];
bool vis[51][51][51];
struct node{
	int x,y,z,t;
};
int sx,sy,sz,ex,ey,ez;
int n,m,hh;
void bfs(int sx,int sy,int sz)
{
	queue <node> q;
	node h,t;
	t={sx,sy,sz,0};
	q.push(t);
	vis[sx][sy][sz]=true;
	while(!q.empty())
	{
		h=q.front();
		q.pop();
		for(int i=0;i<=5;i++)
		{
			int nx=h.x+dx[i];
			int ny=h.y+dy[i];
			int nz=h.z+dz[i];
			int nt=h.t+1;
			if(nx==ex && ny==ey && nz==ez)
			{
				cout<<"Escaped in "<<nt<<" minute(s)."<<endl;
				return;
			}
			if(nx>=0 && nx<=n-1 && ny>=0 && ny<=m-1 && nz>=0 && nz<=hh-1 && !vis[nz][ny][nz] && c[nx][ny][nz]=='.')
			{
				//cout<<nx<<" "<<ny<<" "<<nz<<" "<<nt<<endl;
				t={nx,ny,nz,nt};
				q.push(t);
				vis[nx][ny][nz]=true;
			}
		}
	}
	cout<<"Trapped!"<<endl;
}
int main()
{
	while(1)
	{
		cin>>hh>>n>>m;
		if(n==0 && m==0 && hh==0)
			break;
		for(int i=0;i<=hh-1;i++)
			for(int j=0;j<=n-1;j++)
			{
				cin>>c[i][j];
				for(int k=0;k<=m-1;k++)
				{
					if(c[i][j][k]=='S')
					{
						sx=j;
						sy=k;
						sz=i;
					}
					if(c[i][j][k]=='E')
					{
						ex=j;
						ey=k;
						ez=i;
					}
				}
			}
	//	cout<<sx<<" "<<sy<< "<<sz<<" "<<ex<<" "<<ey<<" "<<ez;
		memset(vis,false,sizeof(vis));
		bfs(sx,sy,sz);
	}
	return 0;
}

快疯了(

2022/3/8 16:07
加载中...