bfs 80分 WA on #4
查看原帖
bfs 80分 WA on #4
897131
yangdezuo楼主2024/5/4 21:31

求助!!! 不理解

#include<bits/stdc++.h>
//#define int long long
using namespace std;
int l,r,c,wx[7]={0,1,-1,0,0,0,0},wy[7]={0,0,0,1,-1,0,0},wz[7]={0,0,0,0,0,1,-1},px,py,pz;
char ch[35][35][35];
struct node{
	int x,y,z,n;
};
bool check(int x,int y,int z){
	if(x>=1&&x<=r&&y>=1&&y<=c&&z>=1&&z<=l&&ch[x][y][z]!='#') return true;
	return false;
}
void bfs(){
	queue<node>q;
	q.push({px,py,pz,0});
	ch[px][py][pz]='#';
	while(!q.empty()){
		int x=q.front().x,y=q.front().y,z=q.front().z,n=q.front().n;
		q.pop();
		if(ch[x][y][z]=='E'){
			cout<<"Escaped in "<<n<<" minute(s).";
			exit(0);
		}
		for(int i=1;i<=6;i++){
			int xx=x+wx[i],yy=y+wy[i],zz=z+wz[i];
			if(check(xx,yy,zz)){
				q.push({xx,yy,zz,n+1});
				ch[xx][yy][zz]='#';
			}
		}
	}
}
signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>l>>r>>c;
    for(int i=1;i<=l;i++){
    	for(int j=1;j<=r;j++)
    		for(int k=1;k<=c;k++){
    			cin>>ch[j][k][i];
    			if(ch[j][k][i]=='S') px=j,py=k,pz=i;
			}
    	getchar();
	}
//	for(int i=1;i<=l;i++){
//    	for(int j=1;j<=r;j++){
//    		for(int k=1;k<=c;k++)
//    			cout<<ch[j][k][i];
//    		cout<<endl;
//		}
//    	cout<<endl;
//	}
	bfs();
	cout<<"Trapped!";
}
2024/5/4 21:31
加载中...