1 条题解

  • 1
    @ 2026-7-26 15:45:52
    #include<bits/stdc++.h>
    using namespace std;
    int jx,jy,jz,qx,qy,qz,zx,zy,zz,dx[] {0,1,0,-1,0,0},dy[] {1,0,-1,0,0,0},dz[] {0,0,0,0,-1,1},biao=1,sum,ans[35];
    char g[35][35][35];
    bool ch=0,vis[35][35][35],qq[35];
    struct node {
    	int x,y,z,step;
    };
    bool check(int x,int y,int z) {
    	if(x<1||y<1||z<1||x>jx||y>jy||z>jz)return 0;
    	if(vis[x][y][z]==1)return 0;
    	if(g[x][y][z]=='#')return 0;
    	return 1;
    }
    void bfs(int x,int y,int z) {
    	queue<node> q;
    	q.push(node {x,y,z,0});
    	while(!q.empty()) {
    		node fr=q.front();
    		q.pop();
    		if(fr.x==zx&&fr.y==zy&&fr.z==zz) {
    			ans[biao++]=fr.step;
    			return;
    		}
    		vis[fr.x][fr.y][fr.z]=1;
    		for(int i=0; i<6; i++) {
    			int nx=fr.x+dx[i];
    			int ny=fr.y+dy[i];
    			int nz=fr.z+dz[i];
    			if(check(nx,ny,nz)==1) vis[nx][ny][nz]=1,q.push(node {nx,ny,nz,fr.step+1});
    		}
    	}
    	ans[biao++]=-1;
    }
    int main() {
    	ios::sync_with_stdio(0);
    	cin.tie(nullptr);
    	while(1) {
    		memset(vis,0,sizeof(vis));
    		cin>>jx>>jy>>jz;
    		if(jz==0&&jy==0&&jz==0)break;
    		for(int i=1; i<=jx; i++)
    			for(int j=1; j<=jy; j++)
    				for(int o=1; o<=jz; o++) {
    					cin>>g[i][j][o];
    					if(g[i][j][o]=='S') qx=i,qy=j,qz=o,g[i][j][o]='.';
    					if(g[i][j][o]=='E')zx=i,zy=j,zz=o,g[i][j][o]='.';
    				}
    		bfs(qx,qy,qz);
    	}
    	for(int i=1; i<biao; i++) if(ans[i]==-1) cout<<"Trapped!"<<endl;
    		else cout<<"Escaped in "<<ans[i]<<" minute(s)."<<endl;
    
    }
    
    • @ 2026-7-26 15:46:27

      qp orz %%%%%%%%

  • 1

信息

ID
218
时间
1000ms
内存
256MiB
难度
5
标签
递交数
6
已通过
3
上传者