首页 > 代码库 > HDU 1253 胜利大逃亡(BFS)
HDU 1253 胜利大逃亡(BFS)
#include <iostream> #include <cstdlib> #include <cstdio> #include <queue> #include <cstring> using namespace std; struct node{ int x,y,z,step; }; int ma[51][51][51]; int A,B,C,T; int mv[6][3] = {{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; //bool vis[51][51][51];开标记数组爆了两次内存,果断删掉 void BFS() { queue<node>q; node f,t; f.x = 0; f.y = 0; f.z = 0; f.step = 0; q.push(f); ma[f.x][f.y][f.z] = 1; while(!q.empty()) { t = q.front(); q.pop(); if(t.x==A-1&&t.y==B-1&&t.z==C-1 && t.step <= T) { printf("%d\n",t.step); return; } for(int i = 0;i<6;i++) { f.x = t.x + mv[i][0]; f.y = t.y + mv[i][1]; f.z = t.z + mv[i][2]; if(0<=f.x && f.x<A&& 0<=f.y&&f.y<B&&0<=f.z&&f.z<C &&ma[f.x][f.y][f.z]==0) { f.step = t.step + 1; ma[f.x][f.y][f.z] = 1; q.push(f); } } } puts("-1"); } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&A,&B,&C,&T); for(int i = 0;i < A;i++) { for(int j = 0;j < B;j++) { for(int k = 0;k < C;k++) { scanf("%d",&ma[i][j][k]); } } } BFS(); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。