参考大佬的代码,简洁明了
https://www.cnblogs.com/sky-stars/p/11140928.html

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

#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cmath>
#include<ctype.h>
#include<memory.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<iomanip>
#include<set>
#include<list>
#include<vector>
#include<stack>
#include<queue>
#define ll long long int
using namespace std;const int maxn = 1010;
const int INF = 0x3f3f3f3f;const int xa[5] = { 0,0,1,-1 };
const int ya[5] = { 1,-1,0,0 };int n, m;
char Map[maxn][maxn];
int vis[maxn][maxn];int ytime[maxn][maxn];
int mtime[maxn][maxn];struct node
{int x, y;
};node now, nt;
node Y, M;queue<node> q;
void bfs(int person)
{while (!q.empty())q.pop();memset(vis, 0, sizeof(vis));if (person == 0)//如果是y{memset(ytime, INF, sizeof(ytime));q.push(Y);vis[Y.x][Y.y] = 1;ytime[Y.x][Y.y] = 0;}if (person == 1)//如果是m{memset(mtime, 0, sizeof(mtime));q.push(M);vis[M.x][M.y] = 1;mtime[M.x][M.y] = 0;}while (!q.empty()){now = q.front(); q.pop();for (int i = 0; i < 4; i++){nt.x = now.x + xa[i];nt.y = now.y + ya[i];if (nt.x >= 0 && nt.x < n &&nt.y >= 0 && nt.y < m &&!vis[nt.x][nt.y] &&Map[nt.x][nt.y] != '#'){q.push(nt);vis[nt.x][nt.y] = 1;if (person == 0)//ytime[nt.x][nt.y] += 11;ytime[nt.x][nt.y] = ytime[now.x][now.y] + 1;if (person == 1)/*mtime[nt.x][nt.y] += 11;*/mtime[nt.x][nt.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 >> Map[i][j];if (Map[i][j] == 'Y'){Y.x = i;Y.y = j;}if (Map[i][j] == 'M'){M.x = i;M.y = j;}}}bfs(0);//先走一遍y的bfsbfs(1);//再走一下m的bfsint ans = 999999;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)if (Map[i][j] == '@')ans = min(ans, ytime[i][j] + mtime[i][j]);cout << 11 * ans << endl;}return 0;
}

hdu 2612 FindAWay 两点BFS相关推荐

  1. 【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)

    [HDU 2612 Find a Way(BFS)](兼BFS入门笔记) 原题入口: http://acm.hdu.edu.cn/showproblem.php?pid=2612 第一篇在CSDN的博 ...

  2. N - Find a way HDU - 2612

    N - Find a way HDU - 2612 首先的想法是找到他们俩到每个 KFC 的最小距离,然后让和最小即可 那么怎么求他们俩到 KFC 的最小距离呢,可以从 KFC 出发去找他俩,也可以从 ...

  3. HDU - 1495 非常可乐(BFS,数学)

    HDU - 1495 非常可乐(BFS,数学) 巨佬的数学解法 #include<iostream> using namespace std; int gcd(int a,int b) { ...

  4. HDU 2612 Find a way(BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题目大意:给你一张n*m的图,图上有两个点Y.M,和若干个点@,找出某个点@使Y.M到这里的距离 ...

  5. HDU - 2612 Find a way(BFS搜索)

    题目: 链接 思路: 用BFS分别以'Y'和'M'的位置为起点进行两次搜索,并把这两次的搜索结果在一个二维数组中保存下来,在对地图遍历遇到'@'更行最小值. PS: 如果用'Y'和'M'点分别去搜每个 ...

  6. hdu 2612(bfs)Find a way

    题意:就是Y和M在@相遇的最短的时间. 思路:基本的广搜题,先Y搜一次,然后M搜一次,最后求出Y和M在@相遇的最短的时间. 代码实现: #include<iostream> #includ ...

  7. HDU 2612 Find a way bfs

    点击打开链接 Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. 【HDU - 2612】Find a way(bfs)

    -->Find a way 直接上Chinese  Descriptions: hsj和lsh最近迷上了pokemon go的游戏.在双十一大物期中考试来临之前,他们想抓一只稀有土拨鼠来攒攒人品 ...

  9. 【hdu1241Oil Deposits】【HDU 2612 Find a way】

    HDU1241Oil Deposits 求联通块数量 Sample Input 1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5  ****@ *@@*@ *@ ...

最新文章

  1. What every programmer should know about memory 笔记
  2. sqlserver、oracle数据库排序空值null问题解决办法
  3. java中数组属于哪种类型_在Java中,关于数组描述正确的是
  4. python网络通信协议_Python网络概述:协议与体系结构的运用
  5. leetcode392. 判断子序列(动态规划)
  6. java tomcat jms_JavaWeb之使用Tomcat、JNDI与ActiveMQ实现JMS消息通信服务
  7. Kafka开发指南之 如何Kafka 事务型生产者,保证生产者exactly once
  8. findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
  9. 【javascript】 的严格模式 详解
  10. 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,基数下标的元素不变
  11. bzoj 2281: [Sdoi2011]黑白棋 bzoj 4550: 小奇的博弈(Nimk博弈+DP)
  12. parentNode,parentElement,offsetParent
  13. H5 font标签及其属性
  14. 微信分组群发45028,微信分组群发has no masssend quota hint
  15. Ubuntu下有线连接开无线WIFI的3种方式
  16. Android错误提示及解决方案(持续更新)
  17. Parse 教程:网络后台基础
  18. 数据库中用户登录注册用户信息表怎么设计如何设计
  19. SpringBoot配置文件加密jasypt【数据库配置加密、redis配置加密、核心参数加密】
  20. Unity下的UDP客户端

热门文章

  1. SQLServer2008 查询分析器内容未保存,查找分析器内容
  2. 探索Windows命令行系列(7):通过命令编译C#类和Java类
  3. Android HttpClient
  4. hdu 2586 How far away? (LCA模板)
  5. 关于ViewDidUnload
  6. POJ 3667 Hotel 线段树区间合并
  7. vue动态设置文字布局方式_十大惊人的文字动画特效
  8. CCF201803-1 跳一跳
  9. 树莓派 python_树莓派笔记08—Python流水灯
  10. 参会指南丨3分钟带你玩转2020数据技术嘉年华!