【HDU - 2612】Find a way(bfs)

-->Find a way

直接上Chinese

 Descriptions:

hsj和lsh最近迷上了pokemon go的游戏。在双十一大物期中考试来临之前,他们想抓一只稀有土拨鼠来攒攒人品(因为土拨鼠的刷新地点最近来到了哈工程)
但是由于土拨鼠过于强大,他的雷霆半月斩以及惊天浪涛沙都可以轻松的将他们两击败,但是他们两的合击必杀技流影电光闪以及天羽屠鼠舞可以将土拨鼠打至昏迷状态,并可将其捕获。
但是因为这是款按时间付费的游戏,他们需要尽快捕捉到土拨鼠(即他们两到土拨鼠的时间之和需要最少),因此他们找到了你来帮他们解决这个问题。 规定每走一步需要花费11分钟。

Input

输入存在多组(需使用!=EOF)
每组的第一行有两个整数n,m(2<=n,m<=200)
接下来n行,每行包括m个字符
‘Y’表示hsj所在的位置
‘M’表示lsh所在的位置
‘.’表示可以通过的地方
‘#’表示教学楼即不能走的地方
‘@’表示稀有土拨鼠刷新的地方(地图中存在多只稀有土拨鼠)
Output

对于每组样例输出他们到达土拨鼠刷新点的最小时间总和。
保证每组样例都存在一个土拨鼠刷新点,他们两都能到达 
Sample Input

4 4
Y.#@
....
.#..
@..M
4 4
Y.#@
....
.#..
@#.M
5 5
Y..@.
.#...
.#...
@..M.
#...#

Sample Output

66
88
66

题目链接:

https://vjudge.net/problem/HDU-2612

这可以说是一题两个bfs

分别求出Y、M在这张地图所有地方的所用时间,再求出在"@"地方的时间的最小值即可

具体操作看代码

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
using namespace std;
int T,n,m;
char mp[1005][1005];//原始地图
int vis[1005][1005];//记录人是否走过
int ytime[1005][1005];//Y 经过这个地方的时间
int mtime[1005][1005];//M 经过这个地方的时间
int dt[][2]= {{1,0},{-1,0},{0,1},{0,-1}};//四个方向
struct node
{int x,y;//坐标
};
node now,net;
node Y,M;
void bfs(int f)//
{queue<node>q;MEM(vis,0);//都要初始化,都没走过,设为0if(f==0)// Y的情况
    {MEM(ytime,INF);q.push(Y);vis[Y.x][Y.y]=1;ytime[Y.x][Y.y]=0;}if(f==1)// M的情况
    {MEM(mtime,INF);q.push(M);vis[M.x][M.y]=1;mtime[M.x][M.y]=0;}while(!q.empty())// bfs 一样的套路
    {now=q.front();q.pop();for(int i=0; i<4; i++)//四个方向
        {net.x=now.x+dt[i][0];net.y=now.y+dt[i][1];if(net.x>=0&&net.x<n&&net.y>=0&&net.y<m&&!vis[net.x][net.y]&&mp[net.x][net.y]!='#')//满足条件
            {q.push(net);//入队vis[net.x][net.y]=1;//走过了if(f==0)//Y 的路线时间ytime[net.x][net.y]=ytime[now.x][now.y]+1;if(f==1)//M 的路线时间mtime[net.x][net.y]=mtime[now.x][now.y]+1;}}}
}
int main()
{while(cin>>n>>m){for(int i=0; i<n; i++){for(int j=0; j<m; j++){cin>>mp[i][j];if(mp[i][j]=='Y'){Y.x=i;Y.y=j;}if(mp[i][j]=='M'){M.x=i;M.y=j;}}}bfs(0); //Y的路线bfs(1); //M的路线int ans=INF; //最小步数for(int i=0; i <n; i++)//搜一遍地图,看一下"@"所在地方的时间之和,取最小值for(int j=0; j<m; j++)if(mp[i][j]=='@')ans=min(ans,ytime[i][j]+mtime[i][j]);cout<<11*ans<<endl;}return 0;
}

 

转载于:https://www.cnblogs.com/sky-stars/p/11140928.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

getMeasuredWidth和getWidth的区别

View的getWidth()和getMeasuredWidth()有什么区别吗&#xff1f; View的高宽是由View本身和Parent容器共同决定的。getMeasuredWidth()和getWidth()分别对应于视图绘制的measure和layout阶段。getMeasuredWidth()获取的是View原始的大小&#xff0c;也就是这个View在XML文件中配…

php图片地址参数错误,图片上传时一直显示请求地址错误怎么办

1、出现“请求地址错误”的直接原因&#xff1a;图中$action null2.根本原因&#xff1a;url美化那一节课程&#xff0c;去掉 index.php的.htaccess 文件修改的时候&#xff0c;没有按照老师的来写&#xff0c;所以美化url以后获取不到地址栏参数&#xff0c;导致$action值为n…

C#写的WebServices可运行于树莓派

阅读目录 Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器Raspkate项目演示回到目录Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器 最近在业余时间玩玩树莓派&#xff0c;刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚&#x…

[导入]Ms XmlDom 异步装载Xml文件

Ms XmlDom 异步装载Xml文件文章来源:http://blog.csdn.net/net_lover/archive/2004/07/07/36015.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816151.html

Django的View(视图)

Django的View&#xff08;视图&#xff09; 一个视图函数&#xff08;类&#xff09;&#xff0c;简称视图&#xff0c;是一个简单的Python 函数&#xff08;类&#xff09;&#xff0c;它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容&#xff0c;一个重定向&am…

高质量的期货研究报告去哪里找?

作者&#xff1a;虎虎的小尾巴链接&#xff1a;https://www.zhihu.com/question/25331621/answer/205439281来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。这是个好问题&#xff0c;我曾经或者直到现在我也一直在追求高…

oracle中偏移,怎么对相同的坐标点偏移?

上面说的第三步必须保证每个点不能重复分配&#xff0c;有些难度&#xff0c;还是用过程代码吧。CREATE TABLE t_offset asselect 1 id,1.001 x,1.002 y, 10 mark from dualunion allselect 2011 id,1.001 x,1.012 y, 31 mark from dualunion allselect 3…

设计模式之--原型模式

1.原型模式定义 原型模式非常简单&#xff0c;定义如下&#xff1a; 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 2.通用类图 原型模式的核心是实现Cloneable接口&#xff0c;此接口为JDK提供的一个标识接口&#xff0c;只有实现了此接口的类才…

搜索目录里所有文件(包括子目录)

搜索目录里所有文件(包括子目录&#xff09; 资料来源&#xff1a;http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx 用到两个函数ParseDirectory 和CreatePathListvoidParseDirectory(stringpath, stringfilter) { strin…

一张图理解buffer与cache

转载于:https://blog.51cto.com/11193863/2169166

oracle服务器不识别tc服务,记一次ORACLE无法启动登陆事故

打开XSHELL 登陆ORACLE用户1.sqlplus scott/scott 提示登陆失败2.sqplus / as sysdba 启动数据库提示3.查找日志操作日志&#xff1a;$ORACLE_HOME/startup.log启动日志&#xff1a;$ORACLE_BASE/diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log (ora11g为SID值)启动日志如果…

重构(Refactoring)技巧读书笔记 之二

重构&#xff08;Refactoring&#xff09;技巧读书笔记 之二<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />General Refactoring Tips, Part 2本文继续《重构&#xff08;Refactoring&#xff09;技巧读书笔记 之一》&#xff…

史上最全的Angular.js 的学习资源

Angular.js 的一些学习资源 基础 官方&#xff1a; http://docs.angularjs.org angularjs官方网站已被墙&#xff0c;可看 http://www.ngnice.com/&#xff1b;官方zip下载包 http://best.factj.com/dolymood/angular-packages&#xff0c;已增加docs服务&#xff0c;输入地址即…

BMP位图之8位位图(三)

起始结构 typedef struct tagBITMAPFILEHEADER { WORD bfType; //类型名&#xff0c;字符串“BM”&#xff0c; DWORD bfSize; //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //实际位图数据的偏移字节数&#xff0c;即前三个部分长度之…

DNN 汉化中的问题????

今天看到了一份已经汉化过的DNN但是比较奇怪&#xff0c;当第一次运行后我所指定的新数据库中并没有添加新的内容&#xff0c;但是网站上的确是已经汉化过了的&#xff0c;不知道它把汉化的内容放到了哪里&#xff1f;&#xff1f;&#xff1f; 另外他所汉化界面的地方&#x…

php 打印对象详细信息,php打印显示数组与对象的函数详解

php打印显示数组与对象的函数详解发布于 2014-11-17 18:55:49 | 699 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&…

ios开发-调用系统自带手势

在 iPhone 或 iPad 的开发中&#xff0c;除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外&#xff0c;也可以用 UIGestureRecognizer 的衍生类別来进行判断。用 UIGestureRecognizer 的好处在于有现成的手势&#xff0c;开发者不用自己计…

Node.js 事件循环

Node.js 事件循环 Node.js 是单进程单线程应用程序&#xff0c;但是因为 V8 引擎提供的异步执行回调接口&#xff0c;通过这些接口可以处理大量的并发&#xff0c;所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中…

全国翻译专业资格(水平)考试

http://www.spta.gov.cn/moreksxx.jsp?lmCodeA02010205转载于:https://www.cnblogs.com/Danilo/archive/2004/10/31/58821.html

linux文件句柄,【LINUX】使用lsof处理文件恢复、句柄以及空间释放问题

曾经在生产上遇到过一个df 和 du出现的结果不一致的问题&#xff0c;为了排查到底是哪个进程占用了文件句柄&#xff0c;导致空间未释放&#xff0c;首先在linux上面&#xff0c;一切皆文件&#xff0c;这个问题可以使用lsof这个BT的命令来处理(这个哈还可以来查询文件句柄泄露…