汤圆の拯救计划

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

又到了汤圆星球一年一度的汤圆节了,但是大魔王却过来把汤圆公主抓走了Σ( ° △ °|||)︴

身为汤圆骑士的QAQ蒟蒻自然而然的肩负着拯救汤圆的使命

QAQ蒟蒻经历了千辛万苦(并没有)之后,来到了大魔王的城堡,根据情报,汤圆公主就被大魔王放在城堡内,然后QAQ蒟蒻发现自己是一个路

痴,所幸的是他拿到了大魔王的城堡的地图,而且在这上面标注了自己和汤圆公主的位置,那么问题来了,聪明的你能帮他计算出需要多少单位

的时间来赶到汤圆公主的位置吗?

Ps:QAQ蒟蒻每一次都可以移动到相邻的非墙的格子中,每次移动都要花费1个单位的时间

有公共边的格子定义为相邻

Input

一开始为一个整数T代表一共有T组数据

每组测试数据的第一行有两个整数n,m (2<=n,m<=300)

接下来的n行m列为大魔王的迷宫,其中

’#’为墙壁,‘_‘为地面

A代表QAQ蒟蒻,O代表汤圆公主:

Output

一组数据输出一个整数代表从QAQ蒟蒻到汤圆的位置的最短时间

如果QAQ蒟蒻不能到达汤圆的位置,输出-1

Sample Input

2
3 3
__A
_##
__O
2 2
A#
#O

Sample Output

6
-1

Hint

Source

QAsQ

一个bfs的题。

首先找到QAQ蒟蒻和公主的位置,然后从QAQ蒟蒻的位置开始遍历,QAQ蒟蒻能走的方向只有四个,而且不能超出地图的范围

,对QAQ蒟蒻走的步数进行计数,直到QAQ蒟蒻没有路可走或者找到公主为止。

#include <iostream>
#include <queue>using namespace std;struct node{int x, y, n;
};
bool Map[300][300]; //图
int v[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; //下一步可能走的方向
int n, m, x, y, xx, yy;
void bfs();
int main(){int t;char c;cin >> t;while(t--){cin >> n >> m;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){cin >> c;if(c == '_')   Map[i][j] = true;else if(c == '#')   Map[i][j] = false;else if(c == 'A'){ //存下QAQ的位置x = i;y = j;}else{ // 存下公主的位置//Map[i][j] = true;xx = i;yy = j;}}}bfs();}return 0;
}void bfs(){queue <node> q;node p, r;p.x = x;p.y = y;p.n = 0; //计步q.push(p);while(!q.empty()){p = q.front();q.pop();for(int i = 0; i < 4; i++){r.x = p.x + v[i][0];r.y = p.y + v[i][1];r.n = p.n + 1;if(r.x == xx && r.y == yy){ //找到公主cout << r.n <<endl;return;}if(r.x >= 1 && r.x <= n && r.y >= 1 && r.y <= m && Map[r.x][r.y]){ // 这一步可以走Map[r.x][r.y] = false;q.push(r);}}}cout << "-1" <<endl; //前面没路了return;
}

sdut oj 3474 汤圆の拯救计划相关推荐

  1. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )...

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  2. wegame饥荒一直连接中_23万人捧场热血传奇怀旧版,WeGame拯救计划,前景如何?...

    日前,<热血传奇怀旧版>正式于WeGame上线,截至开服前,平台共有近23万人预约了这款游戏,一跃成为平台最热游戏. 虽然和当年开服半年,便有30万在线人数的成绩还有所距离,但在目前的端游 ...

  3. DAY3-摸鱼-GG修改器的使用与装备代码的推算-勇士拯救计划

    昨天偶然得知了GG修改器.实在难耐好奇心.又拿了好几个小游戏实验.尝试了好几款之后发现都能改,但是就游戏体验而言还是勇士拯救计划打击感最好.就拿TA做例子. 首先是入坑GG,这位博主的帖子很不错,我从 ...

  4. 喵帕斯之副食店 (sdut oj)

    ** 喵帕斯之副食店 (sdut oj) ** Problem Description 莲酱又去副食店买吃的去惹.现在莲酱有一些不同面额硬币,和一个非常喜欢的糖果. 但是莲酱不知道自己能够买多少颗糖果 ...

  5. 年中Flag拯救计划:寻找年中Flag挑战王!

    来咯来咯~ 福利来咯~ 寻找年中Flag挑战王 2020年初,你立下的Flag,是已摇摇欲坠还是在按部就班地进行中?请结合关键词:读书.健身.就业.跳槽.加薪.考证-展开分享~ 参与方式 打开APP手 ...

  6. UOJ308. 【UNR #2】UOJ拯救计划 解题报告

    文章目录 题目链接 解题思路 详细代码 题目链接 UOJ308. [UNR #2]UOJ拯救计划 解题思路 首先,我们可得答案 a n s = ∑ i = 1 k A k i ∗ [ 恰 好 选 择 ...

  7. LJJ王国的致富修路计划 sdut oj

    LJJ王国的致富修路计划 Problem Description 众说周知LJJ王国有着奇异的结构,因为LJJ国王喜欢素数,所以王国里的路的结构都和素数有关.现在LJJ国王又双叒叕修路了.现有n个要连 ...

  8. 小姐姐拯救计划之我的NAS有ipv6域名之蛇皮操作

    正文前 想骚话ing- 继续想- 欢迎一键三连- 正文 当我们有了ipv6地址时,一定会发愁,面对着这一长串不明的字符,心想,有这功夫不如记车牌号什么ipx582之类的-又跑题了.手里正好有一个域名, ...

  9. SDUT OJ单个字符输入和输出(顺序结构)

    SDUT OnlineJudge #include<iostream> #include<string.h> using namespace std; int main() { ...

最新文章

  1. python代码雨代码复制_python实现跨excel sheet复制代码实例
  2. ADempiere 360LTS 地址(Address)的中国格式定制
  3. linux 加入ad 用ssh,使用samba验证AD用户,允许AD用户登录到linux
  4. CentOS7开发环境搭建(2)
  5. python的pow(-2,3,5)=?
  6. Ubuntu backlight
  7. HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】
  8. Linux学习之CentOS(一)--CentOS6.5环境搭建
  9. 视频、网络传输速率科普
  10. 认识计算机硬件.ppt,认识计算机硬件完整ppt课件
  11. python爬取豆瓣top250电影名称_Python--爬取豆瓣TOP250电影信息
  12. linux 软件包kbd 位置,kbd-audio:通过麦克风来捕获和分析键盘输入的工具
  13. 3、文件、函数练习题
  14. 机器人的自述作文_机器人的自述作文
  15. Windows10 官方原版镜像下载途径 Label:win10解决方案
  16. vue使用高德api 定位获取位置信息 positionLocation.js及 USERKEY_PLAT_NOMATCH报错
  17. 一个JAVA程序员成长之路分享
  18. MOS管开关时的米勒效应——详细分析
  19. Fabric-samples asset-transfer-basic 链码部署与升级(Fabric 2.4.4)
  20. V3000完全拆解【转帖】

热门文章

  1. rk3399 | 通用驱动框架点灯测试
  2. 基于梦飞openmv的自主识别物联网图传小车
  3. 计算机图形专业世界排名,香港科技大学计算机专业世界排名
  4. 业务项目管理软件使用推荐
  5. 以怎样的态度面对生活 - 读《平凡的世界》
  6. unity 使用扫描仪和红外线框制作项目--热带草原
  7. 初探粒子群优化算法(PSO)
  8. Python之循序渐进
  9. Go学习:接口的值类型
  10. 哪一个最让你震撼?看中国最美五大峡谷!