#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. matplotlib显示黑白灰度图像颜色设置

    对于黑白灰度图像(矩阵) 1. 默认使用伪彩色拉升 2 cmap参数为 binary,可能导致颜色反转 3. cmap = gray,same color as origin, that is, wh ...

  2. EDAS Serverless & Kubernetes SLB LVS Nginx

    分布式缓存负载均衡的规则处理:虚拟节点对一致性哈希的改进 - yanghuahui - 博客园https://www.cnblogs.com/yanghuahui/p/3755460.html EDA ...

  3. leetcode 50. Pow(x, n) 、372. Super Pow

    50. Pow(x, n) 372. Super Pow https://www.cnblogs.com/grandyang/p/5651982.html https://www.jianshu.co ...

  4. Dart中的mixins

    /* mixins的中文意思是混入,就是在类中混入其他功能. 在Dart中可以使用mixins实现类似多继承的功能,with关键字 因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Da ...

  5. openresty开发系列29--openresty中发起http请求

    openresty开发系列29--openresty中发起http请求 有些场景是需要nginx在进行请求转发 用户浏览器请求url访问到nginx服务器,但此请求业务需要再次请求其他业务:如用户请求 ...

  6. postman内置脚本说明

    1. 清除一个全局变量 Clear a global variable 对应脚本: postman.clearGlobalVariable("variable_key"); 参数: ...

  7. ES6深入浅出-10 ES6新增的数据类型-3.其他类型

    Map类型 Map 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map Ma ...

  8. iptables 的安装与配置

    iptables 的安装与配置 由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables. #停止firewall  systemctl stop fi ...

  9. PAT 甲级 1070 Mooncake (25 分)(结构体排序,贪心,简单)

    1070 Mooncake (25 分)   Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autum ...

  10. 使用idea创建webservice客户端

     new project: Generate Java Code From Wsdl: 导入junit.jar,编写测试类: