题意:就是Y和M在@相遇的最短的时间。

思路:基本的广搜题,先Y搜一次,然后M搜一次,最后求出Y和M在@相遇的最短的时间。

代码实现:

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,m,count1[210][210],count2[210][210],visited[210][210];//count1记录的是Y到各个点的最短的时间
int b[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//count2记录的是M到各个点最短的时间
char str[210][210];
struct node{int x;int y;
};
int nima(int x,int y)
{if(x>=0&&x<n&&y>=0&&y<m&&str[x][y]!='#'&&visited[x][y]==0)return 1;elsereturn 0;
}
void bfs(int flag,int x,int y)
{int f=0,r=0,t1,t2;node p,temp;queue<node>q;p.x=x;p.y=y;q.push(p);if(flag==1){while(!q.empty())//基本的广搜,此时我用的是队列,此前我用的一直是数组,还是队列好多了
        {p=q.front();q.pop();for(int i=0;i<4;i++){t1=p.x+b[i][0];t2=p.y+b[i][1];if(nima(t1,t2)){visited[t1][t2]=-1;temp.x=t1;temp.y=t2;q.push(temp);count1[t1][t2]=count1[p.x][p.y]+11;}}}}else{while(!q.empty()){p=q.front();q.pop();for(int i=0;i<4;i++){t1=p.x+b[i][0];t2=p.y+b[i][1];if(nima(t1,t2)){visited[t1][t2]=-1;temp.x=t1;temp.y=t2;q.push(temp);count2[t1][t2]=count2[p.x][p.y]+11;}}}}
}
int main()
{int i,j,x1,y1,x2,y2,a[40005][2],num,flag,min;while(scanf("%d%d",&n,&m)!=EOF){getchar();num=0;min=100000000;for(i=0;i<n;i++)scanf("%s",str[i]);for(i=0;i<n;i++){for(j=0;j<m;j++){count1[i][j]=0;count2[i][j]=0;visited[i][j]=0;if(str[i][j]=='Y'){x1=i;y1=j;}else if(str[i][j]=='M'){x2=i;y2=j;}else if(str[i][j]=='@'){a[num][0]=i;a[num][1]=j;num++;}}}flag=1;visited[x1][y1]=-1;bfs(flag,x1,y1);memset(visited,0,sizeof(visited));flag=2;visited[x2][y2]=-1;bfs(flag,x2,y2);for(i=0;i<num;i++){if(count1[a[i][0]][a[i][1]]!=0&&count2[a[i][0]][a[i][1]]!=0)//@必须是Y和M都能到达的,否则容易出错的哦
            {if(min>(count1[a[i][0]][a[i][1]]+count2[a[i][0]][a[i][1]]))min=count1[a[i][0]][a[i][1]]+count2[a[i][0]][a[i][1]];}}printf("%d\n",min);}return 0;
}

转载于:https://www.cnblogs.com/jiangjing/archive/2013/03/07/2947835.html

hdu 2612(bfs)Find a way相关推荐

  1. Hike on a Graph HDU - 1252(bfs)

    "Hike on a Graph" is a game that is played on a board on which an undirected graph is draw ...

  2. 牛客假日团队赛5 L Catch That Cow HDU 2717 (BFS)

    链接:https://ac.nowcoder.com/acm/contest/984/L 来源:牛客网 Catch That Cow 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 3 ...

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

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

  4. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  5. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  6. Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)

    对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图. import java.util.ArrayList; import java ...

  7. 【洛谷】马的遍历--广度优先搜索(BFS)

    题目描述 传送门:https://www.luogu.com.cn/problem/P1443 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意 ...

  8. 二叉搜索树(BFS)总结

    满二叉树 定义:高度为h,并且由2{h} –1个结点的二叉树,被称为满二叉树. 完全二叉树 定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上.这样的二叉 ...

  9. 广度优先搜索(BFS)与深度优先搜索(DFS)

    一.广度优先搜索(BFS) 1.二叉树代码 # 实现一个二叉树 class TreeNode:def __init__(self, x):self.val = xself.left = Nonesel ...

最新文章

  1. oracle中substr() instr() 用法
  2. 【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )
  3. SPSS 26安装教程
  4. 回文树笔记(转自quack_quack)
  5. CCTF部分赛题分析
  6. html5画布 文本无法显示,淡出HTML5画布中的文本效果
  7. Pentium的指令系统(2)——Pentium的指令系统
  8. 给你的站点添加 DNS CAA 保护
  9. 按键精灵 android 模拟器 登录,按键精灵怎么设置安卓模拟器后台
  10. learun.framework v7.0.6 — . net快速开发框架
  11. R 和 Python用于统计学分析,哪个更好?
  12. 信息学奥赛到底考什么?NOI大纲文字收藏版
  13. csv是什么意思中文_csv文件是什么意思
  14. select后面的子查询
  15. magisk卸载内置软件_如何卸载/恢复iPhone自带的内置应用?
  16. [python]计算miou的方式
  17. [RoarCTF2019]polyre
  18. 计算机硬件方面专业术语,计算机专业术语(一)
  19. 【PTA】谷歌的招聘(C语言)
  20. 总结MongoDB采用MongoRepository进行查询

热门文章

  1. echarts迁徙图 vue_vue中高德搭配echarts做数据迁徙流线图
  2. python scatter参数详解_matplotlib.pyplot.scatter散点图结构及用法||参数详解
  3. JZOJ__Day 1【NOIP普及模拟】MATRIX
  4. 笨小猴pascal题解
  5. BZOJ 4032 luogu P4112 [HEOI2015]最短不公共子串 (DP、后缀自动机)
  6. c语言二极管控制程序,二极管(STC89C52): 编写程序控制二极管花样流水灯
  7. mysql幻读和不可重复读的区别_面试官:MySQL的可重复读级别能解决幻读吗
  8. 无障碍开发(七)之实例讲解
  9. vue 引用 vue-resource步骤 (遇错排解)
  10. vue项目打包到腾讯云服务器全过程