10pts,求调,样例没过,输出的总是“Trapped!"
查看原帖
10pts,求调,样例没过,输出的总是“Trapped!"
1105650
YNH_QAQ楼主2023/10/14 10:48
#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y,z,step;
};
int n,m,l,sx,sy,sz,ex,ey,ez,dd[5][3]={{0,1,0},{0,-1,0},{1,0,0},{-1,0,0},{0,0,1}};
char a[305][305][305];
bool vis[305][305][305];
void bfs(){
	queue<node>q;
	q.push((node){sx,sy,sz,0});
	vis[sz][sx][sy]=true;
	while(!q.empty()){
		node cur=q.front();
		q.pop();
		if(cur.x==ex&&cur.y==ey&&cur.z==ez){
			cout<<"Escaped in "<<cur.step<<" minute(s).\n";
			return;
		}
		for(int i=0;i<5;i++){
			int xx=cur.x+dd[i][0];
			int yy=cur.y+dd[i][1];
			int zz=cur.z+dd[i][2];
			if(xx<1||xx>l||yy<1||yy>n||zz<1||zz>m) continue;
			if(vis[zz][xx][yy]==false&&a[zz][xx][yy]!='#'){
				vis[zz][xx][yy]=true;
				q.push((node){zz,xx,yy,cur.step+1});
			}
		}
	} 
	cout<<"Trapped!"<<endl;
}
int main(){
	cin>>l>>n>>m;
	for(int i=1;i<=l;i++)
		for(int j=1;j<=n;j++)
			for(int k=1;k<=m;k++){
				cin>>a[i][j][k];
				if(a[i][j][k]=='S') sx=j,sy=k,sz=i;
				if(a[i][j][k]=='E') ex=j,ey=k,ez=i;
			}
	bfs(); 
	return 0;
}

2023/10/14 10:48
加载中...