-->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

【HDU - 2612】Find a way(bfs)相关推荐

  1. 【hdu 5944】Fxx and string(枚举)

    Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  2. 【HDU - 5500】 Reorder the Books (思维)

    题干: dxy has a collection of a series of books called "The Stories of SDOI",There are n(n≤1 ...

  3. 【HDU - 1085 】Holding Bin-Laden Captive! (母函数)

    题干: We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But ...

  4. 【HDU - 1873】 看病要排队(优先队列)

    题干: 看病要排队这个是地球人都知道的常识.  不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单 ...

  5. 【 HDU - 2570 】B - 迷瘴 (贪心)

    通过悬崖的yifenfei,又面临着幽谷的考验-- 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅.由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死. 幸好yifenfe ...

  6. 【HDU 5402】Travelling Salesman Problem(构造)

    被某题卡SB了,结果这题也没读好...以为每一个格子能够有负数就当搜索做了.怎么想也搜只是去,后来发现每一个格子是非负数,那么肯定就是构造题. 题解例如以下: 首先假设nn为奇数或者mm为奇数,那么显 ...

  7. 【 HDU - 5459】Jesus Is Here(dp)

    题干: I've sent Fang Fang around 201314 text messages in almost 5 years. Why can't she make sense of w ...

  8. 【ZOJ - 2724】【HDU - 1509】Windows Message Queue(优先队列)

    题干: Message queue is the basic fundamental of windows system. For each process, the system maintains ...

  9. 【一只蒟蒻的刷题历程】--- 【洛谷】P1332 血色先锋队(BFS)

    题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好 ...

最新文章

  1. SAP WM高阶之上架策略B (Bulk Storage)
  2. “一束光”让机器人也能拥有触觉?之江实验室这项技术惊艳世界
  3. 一图看懂新一代人工智能知识体系大全
  4. Dumpzilla工具第615行bug的解决办法
  5. [转] Web前端优化之 内容篇
  6. Hive设计和体系结构
  7. python连接influxdb_python 访问 InfluxDB 数据库
  8. WeLive开源PHP在线客服系统源码
  9. 物联网卡产品的应用和拓展
  10. mysql 分页 pageindex_mysql 超1亿数据,优化分页查询
  11. 项目质量管理在民航业中的应用
  12. python数据框添加一列无列名_Pandas只使用列名创建空数据框
  13. 台式计算机前面插耳机没声音,Win10台式机机箱前置耳机插孔没声音如何修复
  14. AppStore 预览图制作
  15. 从头再学java系列之char和Character的区别及Character的源码分析
  16. 机器学习笔记之二十一——基于统计的中文分词方法
  17. Adobe Photoshop CC制作简单的个人Logo
  18. 中山医06年考研初试复试全攻略!( 完整版)
  19. RGB Triplets(后缀和)
  20. 教你在一分钟之内,将100页Word转换为PPT,简直太厉害了

热门文章

  1. linux gone kde 图形程序 兼容,Oracle8i HowTo
  2. python抽象类的实现_python 抽象类、抽象方法的实现
  3. 计算机网址登录教程,melogincn电脑登录教程
  4. android cne服务,Android内存优化-了解内存篇
  5. Anaconda详细安装及安装Scrapy框架
  6. java关键字整理_【java基础知识整理】java基础语法之关键字
  7. 操作系统:Linux虚拟内存知识介绍
  8. 新手实用的电脑维护小常识
  9. 计算机系统基础:设备管理知识笔记
  10. IIS+ASP.NET MVC必须知道的事