链接:https://ac.nowcoder.com/acm/problem/14608
来源:牛客网

题目描述

after的算法书的遗落在一个叫做AIJ的迷宫中了,这个迷宫有N*M个房间,迷宫的入口为(1,1),算法书遗落在(r,c)。迷宫中的房间有四种状态:空房间、无法进入的房间、有墨菲斯托存在的房间和有莉莉丝存在的房间。墨菲斯托会否定一切,而莉莉丝会诱惑人做一种叫做YK的活动。after是一个意志薄弱的人,他遇到了墨菲斯托和莉莉丝之后,便会变成眼神空洞的超级YK机器人。after每步可以从他当前的房间走至上下左右四个房间的其中一个房间。after害怕变成超级YK机器人,所以要尽快拿到算法书然后从入口逃离。问after最少需要走多少步才可以在不变成超级YK机器人的情况下从入口出发取回算法书并逃离迷宫?

输入描述:

第一行一个正整数T(T<=10),表示共有T组数据。
对于每组数据,第一行四个正整数N,M,r,c(1<=N,M<=1000;1<=r<=N;1<=c<=M)。
接下来N行,每行M个字符,每个表示房间的状态,“.”表示空房间,“*”表示无法进入的房间,“F”表示有墨菲斯托存在的房间,“M”表示有莉莉丝存在的房间。
数据保证(1,1)为“.”。
输出描述:
对每组数据输出一行,即after最少需要走的步数。若after无法取回算法书,则输出“IMPOSSIBLE”(不带引号)。

示例1

输入

1
4 4 4 3
…**
*F…
..
*M.F

输出

14

【想说的】:这个题目不太难,就是理解题目意思有点那啥,记录一下。题目的意思就是说,M,F不能同时走。那么可以先把F当作空地bfs求路径,然后再把M当空地。最后分情况讨论即可。

题解

#include<bits/stdc++.h>
using namespace std;
const int maxn=1002;
char ymp[maxn][maxn];
int mp[maxn][maxn];
int d[maxn][maxn];
int n,m,tx,ty;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
queue<int> que;
void bfs()
{for(int i=0;i<n;i++)for(int j=0;j<m;j++){d[i][j]=-1;}while(!que.empty())que.pop();d[0][0]=0;que.push(0);while(que.size()){int tem=que.front();que.pop();int x=tem/m;int y=tem%m;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx<0||nx>=n||ny<0||ny>=m||d[nx][ny]!=-1)continue;if(mp[nx][ny]!=1)continue;d[nx][ny]=d[x][y]+1;que.push(nx*m+ny);}}return ;}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d%d%d",&n,&m,&tx,&ty);tx--;ty--;for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf(" %c",&ymp[i][j]);}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(ymp[i][j]=='.')mp[i][j]=1;if(ymp[i][j]=='*')mp[i][j]=0;if(ymp[i][j]=='F')mp[i][j]=1;if(ymp[i][j]=='M')mp[i][j]=0;}}int k1=-1,k2=-1;bfs();k1=d[tx][ty];for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(ymp[i][j]=='M')mp[i][j]=1;if(ymp[i][j]=='F')mp[i][j]=0;}}bfs();k2=d[tx][ty];if(k1==-1&&k2!=-1)cout<<k2*2<<endl;else if(k1!=-1&&k2==-1)cout<<k1*2<<endl;else if(k1!=-1&&k2!=-1)cout<<min(k1,k2)*2<<endl;else{cout<<"IMPOSSIBLE"<<endl;}}return 0;
}

【牛客基础】after与迷宫(bfs+理解题目)相关推荐

  1. 如何快速掌握MYSQL?附牛客网精选的50道SQL题目详解【入门推荐】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 另外也欢迎大家 ...

  2. 牛客——The Chivalrous Cow(bfs板题)

    The Chivalrous Cow 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 Farm ...

  3. 牛客网——wyh的迷宫

    wyh的迷宫 题目 思路 代码 结果 题目 给你一个n*m的迷宫,这个迷宫中有以下几个标识: s代表起点 t代表终点 x代表障碍物 .代表空地 现在你们涵哥想知道能不能从起点走到终点不碰到障碍物(只能 ...

  4. [补题]牛客练习56,迷宫【orz】

    先上题: 思路:别被题目下到,其实就是一个dp,首先要对题目进行分析. 可得: 1. 它不会向左走, 因为向左走后,右边的格子就空了,那么就又要向右走,它就在这终老. 2. 不会向上走,因为向上走,就 ...

  5. 牛客网-精华专题-前端校招面试题目合集

    前端校招面试题目合集 501 HTML CSS 前端基础 HTML 浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层(structural layer).表示层(presentation ...

  6. 关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)

    关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训) 题目: 链接:https://ac.nowcoder.com/acm/contest/3004/B 来源:牛客网 题目描述 ...

  7. 2020牛客寒假算法基础集训营4

    链接:link 来源:牛客网 A 欧几里得 题目描述 现在,如果已知 g c d ( a , b ) gcd(a,b) gcd(a,b) 共递归了 n n n次,求所有可能的 a , b a,b a, ...

  8. 【牛客 错题集】Linux系统方面错题合集

    前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...

  9. 牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】

    链接:https://www.nowcoder.com/questionTerminal/a7052c5bd8634edb9ccee711a5c1ea54 来源:牛客网 短最优升级路径 题目描述:游戏 ...

最新文章

  1. 【OpenCV】图像代数运算:平均值去噪,减去背景
  2. 软件安装被分成了两个iso文件怎么安装
  3. PA银行面试之炮灰之程
  4. 操作系统(王道笔记第三章内存)
  5. Spring: ConfigurationClassUtils类
  6. 想写高质量代码,减少代码负债性?底层和源码这类还是得多用用心
  7. ASCII码(C语言)
  8. css vss irf,网络虚拟化技术:VSS、IRF2和CSS解析
  9. 改变iOS searchBar中textField的背景颜色
  10. IDEA使用/配置指南(从入门到精通)_by瞎琢磨先生
  11. Unity 知识点复习
  12. 2022年全国计算机四级考试精选模拟题及答案
  13. Eclipse 代码大小写切换
  14. TL-R402M路由器恢复出厂设置方法
  15. idea安装和pojie
  16. 【VR开发篇】Unity3D 使用物理公式实现抛物线传送功能
  17. 孝经白话:孝治章第八
  18. 建设可持续社区离不开物业,你们小区的物业怎么样?
  19. 解决win10缩放125%时,字体模糊的问题
  20. 米家、华为HiLink有安防设备,智汀也有安防设备啦

热门文章

  1. 中国电动汽车市场正在迎接资本冲击,小鹏汽车或将进账美金6至7亿
  2. 抓耳挠腮猜不出来的猜数字
  3. 基于ESP8266的离线定时熄灯方案
  4. win scoop Couldn‘t find manifest for ‘openjdkxx‘
  5. 【套题】2015ACM/ICPC亚洲区长春站 HDU5532 5533 5534 5536 5538
  6. 北卡罗来纳大学教授王永革:基于拜占庭协议的PoS是共识机制未来的发展方向...
  7. vs .sln与.suo文件
  8. 【二】2D测量 Metrology——get_metrology_object_result()算子
  9. 报录比低计算机考研,“最容易”考上研究生4个大学专业!报录比低,难度小,适合跨考...
  10. 最优化方法(运筹学方法)