http://acm.hdu.edu.cn/showproblem.php?pid=2579

题目大意:给定 r * c 的迷宫,还有一个整数 k 。迷宫中“.”表示可以走,“#”表示墙,当时间为k的倍数时,这些墙会消失。求从起点“Y”到终点“G”的最短时间。(人不能呆在一点不动)。

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<algorithm>
#define N 105
using namespace std;
char map[N][N];
int step[N][N][10];//多加一维,记录(time%k)
int r,c,k,x_s,y_s,x_e,y_e;
int dir[4][2]={0,1,0,-1,1,0,-1,0};
struct node
{int x,y,mod;
};
int BFS()
{int i;queue<node>q;node now,next;now.x=x_s;now.y=y_s;now.mod=0;memset(step,-1,sizeof(step));step[now.x][now.y][now.mod]=0;q.push(now);while(!q.empty()){now=q.front();q.pop();if(now.x==x_e && now.y==y_e) return step[now.x][now.y][now.mod];for(i=0;i<4;i++){next.x=now.x+dir[i][0];next.y=now.y+dir[i][1];next.mod=(now.mod+1)%k;if(next.x<0 || next.x>=r || next.y<0 ||next.y>=c) continue;if(step[next.x][next.y][next.mod]!=-1)            continue;if(map[next.x][next.y]=='#' && next.mod!=0)       continue;step[next.x][next.y][next.mod]=step[now.x][now.y][now.mod]+1;q.push(next);}}return -1;
}
int main()
{int T,i,j,ans;scanf("%d",&T);while(T--){scanf("%d%d%d",&r,&c,&k);for(i=0;i<r;i++){scanf("%s",map[i]);for(j=0;map[i][j];j++){if(map[i][j]=='Y'){x_s=i;y_s=j;map[i][j]='.';}if(map[i][j]=='G'){x_e=i;y_e=j;map[i][j]='.';}}}ans=BFS();if(ans==-1) printf("Please give me another chance!\n");else printf("%d\n",ans);}return 0;
}

hdu 2579 BFS相关推荐

  1. hdu 5433(bfs+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5433 解题思路: dp[i][j][k]表示在(x,y)点,毅力为k时的最小体力.由于每个点可能会走多 ...

  2. D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路

    D - Age of Moyu HDU - 6386 题意:双向图,m条边,每条边有一个编号id,而花费就是根据这个id的变化来确定的求1-n的最短路 思路:全值为0,1的图直接bfs按层遍历图找到n ...

  3. hdu 5167 bfs

    因为斐波那契数列增长很快(指数级),所以10Y以内只有不到50个斐波那契数,将这些数字所有可能的乘积存起来查询即可,这里采用bfs+set的方式. 1 #include <iostream> ...

  4. hdu 1026 bfs+记录路径

    题意:从0,0点出发到n-1,m-1点,路上的数字代表要在这个点额外待多少秒,求最短的路 递归输出路径即可 1 #include<cstdio> 2 #include<iostrea ...

  5. hdu 4568 bfs + 状压dp

    //这题的数据是不是有问题... 不考虑宝藏一个也拿不到也能AC... 1 #include "bits/stdc++.h" 2 using namespace std; 3 co ...

  6. hdu 1044 BFS(压缩图)+DFS

    题意:              给你起点,终点,图上有墙有路还有宝物,问你在规定时间内能否能到终点,如果能问最多能捡到多少宝物. 思路:           看完这个题目果断 BFS+三维的mark ...

  7. hdu 1226(bfs+同余剪枝)

    超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. hdu 5179(bfs打表+二分)

    beautiful number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. hdu 3681(bfs+dfs+状态压缩)

    解题思路:这道题属于图上来回走的问题,可以把重复走的过程弱化,即只强调从u->v的结果,中间经过的节点都不考虑.这道题里面'G','F','Y'是重要的节点,其余的点我们是可以忽略的,也就是说, ...

最新文章

  1. Python中将两个列表数据zip起来并遍历(Iterating through two lists in parallel)
  2. 架构师技术文档:Redis+Nginx+Spring全家桶+Dubbo精选
  3. 【转】Plotting texts as graphs with R and igraph
  4. javac和java命令的使用
  5. Dart_VM的相关简介与运行模式解析
  6. php课程设计实验心得,PHP程序设计教程实验及课程设计
  7. Mysql代码生成器转Oracle代码生成
  8. Golang实践录:xorm使用记录
  9. vue ---- 组件综合案例(购物车案例)
  10. 关于信道利用率的总结与一道习题的最终解释
  11. SQL 中的 in 与 not in、exists 与 not exists 的区别以及性能分析
  12. 十三、this关键字
  13. 谷歌免费域名邮箱申请全解
  14. java实验报告9 面向接口编程
  15. 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
  16. 网易有道的面试也太难了吧,这都堪比我朋友三面的阿里了!
  17. 百分制成绩转换五分制F【Python习题】(保姆级图文+实现代码)
  18. [OTA-day3SPI]W25Q64擦写
  19. 在Archlinux下安装Xilinx ISE12.3以及Digilent Adept的使用
  20. 专科入行软件测试可行么

热门文章

  1. 关于file的部分简单命令
  2. 在 Docker 中使用 flannel - 每天5分钟玩转 Docker 容器技术(60)
  3. 新0-Day漏洞或将给Linux桌面发行版带来浩劫
  4. bean初始化、注销
  5. 实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI
  6. Android Json 解析
  7. 了解SQL Server触发器及触发器中的事务
  8. canvas高斯模糊算法
  9. 《Java多线程编程核心技术》读后感(十五)
  10. Java设计模式----策略模式(Strategy)