#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int mapp[51][51][51];
int dir[6][3]={{0,1,0},{0,-1,0},{0,0,1},{0,0,-1},{1,0,0},{-1,0,0}};
int visit[51][51][51];
int flag,time[125001],a,b,c,t,ret;
bool cmp(int x,int y)
{
 return x>y;
}
void dfs(int z,int x,int y,int cont)
{
 int i,j,k,zz,xx,yy;
 if(z==a-1&&x==b-1&&y==c-1)
 {
  if(cont<=t)
  {
   flag=1;
   time[ret++]=cont;
   return;
  }
 }
 if(cont>=t) return;
 for(i=0;i<6;i++)
 {
  zz=z+dir[i][0];
  xx=x+dir[i][1];
  yy=y+dir[i][2];    
  if(visit[zz][xx][yy]==1||zz<0||zz>=a||xx<0||xx>=b||yy<0||yy>=c||mapp[zz][xx][yy]==1) continue;
  cont++;
  visit[zz][xx][yy]=1;
  dfs(zz,xx,yy,cont);
  visit[zz][xx][yy]=0;
 } 
}
int main()
{
 int i,j,k,n;
 cin>>n;
 while(n--)
 {
     scanf("%d %d %d %d",&a,&b,&c,&t);
  if(a==b==c==1)
  {
   cout<<"-1"<<endl;
   continue;
  }
  if(a+b+c>t)
  {
   cout<<"-1"<<endl;
   continue;
  }
  for(i=0;i<a;i++)
  {
   for(j=0;j<b;j++)
   {
    for(k=0;k<c;k++)
    {
     scanf("%d",&mapp[i][j][k]);
    }
   }
  }
  flag=0;
  ret=0;
  memset(visit,0,sizeof(visit));
  memset(time,0,sizeof(time));
  visit[0][0][0]=1;
  dfs(0,0,0,0);
  sort(time,time+ret,cmp);
  if(flag==1) cout<<time[0]<<endl;
  else cout<<"-1"<<endl;
 }
 return 0;
}

杭电1253 超时的bfs...的更多相关文章

  1. 杭电ACM题单

    杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007 经典问题,最 ...

  2. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  3. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

  4. 杭电dp题集,附链接还有解题报告!!!!!

    Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f ...

  5. 杭电acm习题分类

    专注于C语言编程 C Programming Practice Problems (Programming Challenges) 杭电ACM题目分类 基础题:1000.1001.1004.1005. ...

  6. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

  7. acm入门 杭电1001题 有关溢出的考虑

    最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...

  8. 杭电acm 1002 大数模板(一)

    从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...

  9. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

随机推荐

  1. openstack kvm cannot set up guest memory 'pc.ram': Cannot allocate memory

    Kvm:启动报错:error: internal error: process exited while connecting to monitor: 2018-11-12T01:47:14.9933 ...

  2. VS2010配置OpenGL开发环境(转)

    OpenGL(Open Graphics Library)是一个跨编程语言.跨平台的专业图形程序接口.OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应 ...

  3. 【物联网】esp8266+LCD

    https://blog.csdn.net/qq_40531588/article/details/89515149

  4. 使用mysqlslap测试MySQL性能

    之前介绍过MySQL的性能测试工具sysbench, 这次介绍一个mysql自带的比较简单的性能测试命令mysqlslap. 下面的指令模拟了1000个进程同事连接mysql,并执行100个查询操作, ...

  5. LODOP打印超文本保留背景色带平铺水印

    前面的博文:LODOP中设置设置图片平铺水印,超文本透明. 介绍过 ,如果不想去掉超文本的背景色,想在超文本背景色和超文本内容文字之间加上水印,让水印在背景色上面,文字下面,是不行的,因为平铺的图片和 ...

  6. Python3之内建模块hashlib

    摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串( ...

  7. Python3之内建模块collections

    collections是python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不可变集合,例如,一个点的二维坐标可以表示成 >>> ...

  8. Data - 深入浅出学统计 - 下篇

    本文是已读书籍的内容摘要,少部分有轻微改动,但不影响原文表达. :以漫画形式来讲解最基本的统计概念和方法. ISBN: 9787121299636 https://book.douban.com/su ...

  9. web端自动化——selenium3+Python3+pycharm自动化

    1.前言: 对于初学者来说,python自带的IDLE,精简又方便,不过一个好的编辑器能让python编码变得更方便,更加优美些. 不过呢,也可以自己去下载其他更好用的代码编辑器,在这推荐: PyCh ...

  10. <统计学>统计学开篇

    我们或多多少都接触学习过统计学,可统计学到底是一种什么样的学科呢? 我们将统计学定义为:对数据进行收集.整理.展示.分析和解释,以帮助人们更有效地进行决策的科学. 关于统计学的研究通常分为两类:描述统 ...