poj 2251(注意入口不一定是在第一层)

复制代码
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
#define mn 35
int l,r,c,result;
const int da[] = {1,-1,0,0,0,0},db[] = {0,0,0,1,0,-1},dc[] = {0,0,1,0,-1,0}; 
bool visit[mn][mn][mn]; 
char data[mn][mn][mn];

struct node{
    int i,p,q,deep;
    node(int a,int b,int c,int d){
        i = a;
        p = b;
        q = c;
        deep = d;
    }
};
typedef node Node;
bool bfs(int d,int e,int f,int g){
    queue<Node>qq;
    qq.push(Node(d,e,f,g));
    while(!qq.empty()){
        int i = qq.front().i;
        int p = qq.front().p;
        int q = qq.front().q;
        int deep = qq.front().deep;
        qq.pop();
        if(data[i][p][q]=='E'){
            result = deep;
            return true;
        }
        for(int j=0;j<6;j++){
            int id = i+da[j];
            int pd = p+db[j];
            int qd = q+dc[j];
            if(id<0||id>=l||pd<0||pd>=r||qd<0||qd>=c||visit[id][pd][qd]||data[id][pd][qd]=='#'){
                continue; 
            }
            visit[id][pd][qd] = true;
            qq.push(Node(id,pd,qd,deep+1));
        }
    }
    return false;
}
int main(){
    while(scanf("%d%d%d",&l,&r,&c)==3&&l){
        for(int i=0;i<l;i++){
            for(int j=0;j<r;j++){
                scanf("%s",data[i][j]);
            }
        }
        int si,sj,sk;
        memset(visit,false,sizeof visit);
        for(int i=0;i<l;i++){
            for(int j=0;j<r;j++){
                for(int k=0;k<c;k++){
                    if(data[i][j][k]=='S'){
                        si = i;
                        sj = j;
                        sk = k;
                    }
                }
            }
        }
        visit[si][sj][sk] = true;
        result = -1;
        if(bfs(si,sj,sk,0)){
            printf("Escaped in %d minute(s).\n",result);
        }
        else{
            printf("Trapped!\n");
        }
    }
    return 0;
} 
复制代码

 

posted @   智人心  阅读(19)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示