博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BFS HDOJ 2102 A计划
阅读量:5318 次
发布时间:2019-06-14

本文共 1747 字,大约阅读时间需要 5 分钟。

 

题意:中文题面

分析:双层BFS,之前写过类似的题.总结坑点:

  1.步数小于等于T都是YES  2. 传送门的另一侧还是传送门或者墙都会死  3. 走到传送门也需要一步

 

#include 
using namespace std;char maze[2][11][11];int dx[4] = {-1, 1, 0, 0};int dy[4] = {0, 0, -1, 1};int n, m, tot;bool vis[2][11][11];struct Point { int x, y, z, step; Point () {} Point (int x, int y, int z, int step) : x (x), y (y), z (z), step (step) {}};Point s, e;bool check(int x, int y, int z) { if (x < 1 || x > n || y < 1 || y > m || vis[z][x][y] || maze[z][x][y] == '*') return false; else return true;}bool BFS(void) { memset (vis, false, sizeof (vis)); int res = 0x3f3f3f3f; queue
que; que.push (s); vis[s.z][s.x][s.y] = true; while (!que.empty ()) { Point u = que.front (); que.pop (); if (u.x == e.x && u.y == e.y && u.z == e.z) { res = min (res, u.step); continue; } for (int i=0; i<4; ++i) { int tx = u.x + dx[i], ty = u.y + dy[i], tz = u.z; if (!check (tx, ty, tz)) continue; if (maze[tz][tx][ty] == '#') { if (maze[1-tz][tx][ty] == '*' || maze[1-tz][tx][ty] == '#' || vis[1-tz][tx][ty]) continue; vis[1-tz][tx][ty] = true; que.push (Point (tx, ty, 1 - tz, u.step + 1)); continue; } vis[tz][tx][ty] = true; que.push (Point (tx, ty, tz, u.step + 1)); } } return res <= tot;}int main(void) { int T; scanf ("%d", &T); while (T--) { scanf ("%d%d%d", &n, &m, &tot); for (int k=0; k<2; ++k) { if (k == 1) getchar (); for (int i=1; i<=n; ++i) { scanf ("%s", maze[k][i] + 1); for (int j=1; j<=m; ++j) { if (maze[k][i][j] == 'S') { s = Point (i, j, k, 0); } else if (maze[k][i][j] == 'P') { e = Point (i, j, k, 0); } } } } if (BFS ()) puts ("YES"); else puts ("NO"); } return 0;}

  

 

转载于:https://www.cnblogs.com/Running-Time/p/4982500.html

你可能感兴趣的文章
u-boot的环境变量
查看>>
ios消息机制
查看>>
Java泛型详解
查看>>
4.IP地址和端口
查看>>
孤荷凌寒自学python第五十天第一次接触NoSql数据库_Firebase
查看>>
函数返回类型
查看>>
配置CLion作为Qt5开发环境
查看>>
JS搜索菜单实现
查看>>
.net程序和管理员权限的一些事
查看>>
Ubuntu 14.04下使用crontab定时弹出窗口
查看>>
SpringSecurity之记住我功能的实现
查看>>
三维数组中求某位地址
查看>>
node05-fs
查看>>
二分查找-binarySearch
查看>>
MVC自定义验证信息
查看>>
【原创】关于lxml读取文件后不能正常输出中文
查看>>
Python Open Source Project List
查看>>
第六次作业
查看>>
基于AngularJS的前端架构(上)
查看>>
Django的数据模型层实现特点
查看>>