hdu 2612 Find a way(bfs)

Problem Description
Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.
Yifenfei’s home is at the countryside, but Merceki’s home is in the center of city. So yifenfei made arrangements with Merceki to meet at a KFC. There are many KFC in Ningbo, they want to choose one that let the total time to it be most smallest. 
Now give you a Ningbo map, Both yifenfei and Merceki can move up, down ,left, right to the adjacent road by cost 11 minutes.

 

Input
The input contains multiple test cases.
Each test case include, first two integers n, m. (2<=n,m<=200). 
Next n lines, each line included m character.
‘Y’ express yifenfei initial position.
‘M’    express Merceki initial position.
‘#’ forbid road;
‘.’ Road.
‘@’ KCF

 

Output
For each test case output the minimum total time that both yifenfei and Merceki to arrival one of KFC.You may sure there is always have a KFC that can let them meet.

 

Sample Input
4 4
Y.#@
....
.#..
@..M
4 4
Y.#@
....
.#..
@#.M
5 5
Y..@.
.#...
.#...
@..M.
#...#

 

Sample Output
66
88
66

 

bfs求出两个人到各个点的距离,最后枚举最短的距离。用c++提交WA,G++提交AC了,这是什么原因。。。

  1 #pragma comment(linker, "/STACK:1024000000,1024000000")
  2 #include<iostream>
  3 #include<cstdio>
  4 #include<cstring>
  5 #include<cmath>
  6 #include<math.h>
  7 #include<algorithm>
  8 #include<queue>
  9 #include<set>
 10 #include<bitset>
 11 #include<map>
 12 #include<vector>
 13 #include<stdlib.h>
 14 #include <stack>
 15 using namespace std;
 16 #define PI acos(-1.0)
 17 #define max(a,b) (a) > (b) ? (a) : (b)
 18 #define min(a,b) (a) < (b) ? (a) : (b)
 19 #define ll long long
 20 #define eps 1e-10
 21 #define MOD 1000000007
 22 #define N 206
 23 #define inf 1e12
 24 int n,m;
 25 char mp[N][N];
 26 struct Node{
 27    int x,y;
 28    int t;
 29 }st1,st2;
 30 int vis[N][N];
 31 int dirx[]={0,0,-1,1};
 32 int diry[]={-1,1,0,0};
 33 int dist1[N][N];
 34 int dist2[N][N];
 35 void bfs1(Node st){
 36    memset(vis,0,sizeof(vis));
 37    queue<Node>q;
 38    q.push(st);
 39    vis[st.x][st.y]=1;
 40 
 41    Node t1,t2;
 42    while(!q.empty()){
 43       t1=q.front();
 44       q.pop();
 45       for(int i=0;i<4;i++){
 46          t2.x=t1.x+dirx[i];
 47          t2.y=t1.y+diry[i];
 48          if(mp[t2.x][t2.y]=='#') continue;
 49          if(t2.x<0 || t2.x>=n || t2.y<0 || t2.y>=m) continue;
 50          if(vis[t2.x][t2.y]) continue;
 51          vis[t2.x][t2.y]=1;
 52          t2.t=t1.t+1;
 53          dist1[t2.x][t2.y]=t2.t;
 54          q.push(t2);
 55       }
 56    }
 57 }
 58 void bfs2(Node st){
 59    memset(vis,0,sizeof(vis));
 60    queue<Node>q;
 61    q.push(st);
 62    vis[st.x][st.y]=1;
 63 
 64    Node t1,t2;
 65    while(!q.empty()){
 66       t1=q.front();
 67       q.pop();
 68       for(int i=0;i<4;i++){
 69          t2.x=t1.x+dirx[i];
 70          t2.y=t1.y+diry[i];
 71          if(mp[t2.x][t2.y]=='#') continue;
 72          if(t2.x<0 || t2.x>=n || t2.y<0 || t2.y>=m) continue;
 73          if(vis[t2.x][t2.y]) continue;
 74          vis[t2.x][t2.y]=1;
 75          t2.t=t1.t+1;
 76          dist2[t2.x][t2.y]=t2.t;
 77          q.push(t2);
 78       }
 79    }
 80 }
 81 int main()
 82 {
 83    while(scanf("%d%d",&n,&m)==2){
 84       memset(dist1,0,sizeof(dist1));
 85       memset(dist2,0,sizeof(dist2));
 86       for(int i=0;i<n;i++){
 87          scanf("%s",mp[i]);
 88          for(int j=0;j<m;j++){
 89             if(mp[i][j]=='Y'){
 90                st1.x=i;
 91                st1.y=j;
 92                st1.t=0;
 93             }
 94             if(mp[i][j]=='M'){
 95                st2.x=i;
 96                st2.y=j;
 97                st2.t=0;
 98             }
 99          }
100       }
101 
102       bfs1(st1);
103       bfs2(st2);
104 
105       int ans=inf;
106       for(int i=0;i<n;i++){
107          for(int j=0;j<m;j++){
108             if(mp[i][j]=='@'){
109                if(dist1[i][j]!=0 && dist2[i][j]!=0){
110                   int sum=dist1[i][j]+dist2[i][j];
111                   if(sum<ans){
112                      ans=sum;
113                   }
114                }
115 
116             }
117          }
118       }
119       printf("%d\n",ans*11);
120 
121 
122    }
123     return 0;
124 }
View Code

 

 

转载于:https://www.cnblogs.com/UniqueColor/p/4972680.html

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

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

相关文章

七桥问题

怎么不重复地走完连接两座岛和陆地的七座桥&#xff1f; 简化为以下&#xff1a; 答案是不能走完的。 奇点&#xff1a;这个点有奇数条线汇聚于此 偶点&#xff1a;这个点有奇数条线汇聚于此 七桥问题——一笔画问题 若一个图形全部是偶点或者只有2个奇点&#xff08;没有…

office2016打开PPT出现解决VBE6EXT.OLB不能被加载问题的解决办法

第一步 打开路径C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\VBA。找到VBA只要是默认安装路径均一样。 第二步 打开VBA6找到VBE6EXT.OLB将其复制到VBA7.1中。 第三步 打开VBA7.1找到VBE7.DLL将其复制到VBA6中。 第四步…

机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)

目录 一、神经元的数学模型 ​ 二、感知器算法&#xff08;SVM算法前身&#xff09; 1、目的 2、流程 >>>问题1&#xff1a;下图w和b的调整是什么意思&#xff1f; 3、算法的有效性验证 1&#xff09;原算法 2&#xff09;增广矩阵 3&#xff09;修改后的算法…

打开word2016总是出现很抱歉,此功能看似中断需要修复。。问题解决办法

第一步 打开运行窗口&#xff0c;在电脑桌面左下角有个圆圈点击进去&#xff0c;输入regedit&#xff0c;即可进入。 第二步 打开HKEY_CURRENT_USER中的SOFTWARE 第三步 找到HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Word\Options项如图红色箭头标示。然后点击O…

机器学习——人工神经网络之多层神经网络(多层与三层)

目录 一、多层神经网络 1、多层神经网络数学模型 2、数学模型中的非线性函数fai 1&#xff09;非线性函数fai存在的意义 2&#xff09;非线性函数fai具体是什么&#xff1f; 3、多层神经网络与单层神经网络的区别与改进 1&#xff09;单层神经网络数学模型 2&#xff0…

排序算法02--冒泡排序

思路&#xff1a;冒泡排序 就是把大的数一个个沉到下面&#xff0c;当然也可以是把小的数一个个浮到上面。 在最外层需要比较n-1次&#xff0c;因为n-1个大的数被沉到了下面&#xff0c;剩下一个自然就是最小的数了。 在这n-1次的里层&#xff0c;还需要亮亮相互比较&#xff0…

关于▲的各种交点

对于△ABC证明&#xff1a; ①三角形的三条中线交于一点&#xff1a; 等腰三角形&#xff1a;作中线BD、CE与AC、AB交于D、E&#xff0c;相交于O&#xff0c;连接AO并延长交BC于F&#xff1b; 证△ABD全等于△ACE&#xff0c;再证△EBO全等于△D…

机器学习——支持向量机SVMpython实现

一、SVM理论 可见以下文章&#xff1a; 《机器学习——支持向量机SVM之线性模型》 《机器学习——支持向量机SVM之非线性模型低维到高维映射》 《机器学习——支持向量机SVM之非线性模型原问题与对偶问题》 《机器学习——支持向量机SVM之非线性模型原问题转化为对偶问题》…

ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

鸣谢网址&#xff1a;http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到&#xff0c;GroupingGrid…

九个Console命令,让js调试更简单

一、显示信息的命令 1: <!DOCTYPE html>2: <html>3: <head>4: <title>常用console命令</title>5: <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />6: </head>7: <body>8: …

numpy——axis

size()和max()中的含义 以前我理解axis0代表行&#xff0c;axis1代表列&#xff1b; 但是这种含义在函数size()和max()中恰恰相反&#xff1b; 其实不是这样的&#xff0c;我们回到单词axis本身&#xff0c;它的意思是“轴”&#xff0c;没错轴就是代表一个方向&#xff0c;像…

Halcon例程(基于3D形状匹配识别方法)详解 —— create_shape_model_3d_lowest_model_level.hdev

一、例程简介 最近在研究3D识别方面的东西&#xff0c;查了不少资料&#xff0c;发现halcon里有不少关于三维物体识别的例程&#xff0c;这里对其中一个做出详解。该例程是基于三维匹配方法的&#xff0c;因为有三维模型SM3&#xff0c;所以不需要自己创建&#xff1b;另因为例…

15.瀑布流、测量

排行界面TopProtocol &#xff1a;json数据就是写字符串&#xff0c;所以不需要写bean对象public class TopProtocol extends BaseProtocol<List<String>> { Override public List<String> paserJson(String json) { List<String> datasnew ArrayList&…

linear-gradient线性渐变

background:linear-gradient(180deg, sliver 20%, skyblue 80%, gray 100%);180deg 是线性渐变的角度,水平方向;如果是90deg,则是垂直方向. silver 20% 是最上面的颜色和该颜色所在的位置,可以为负值,,如 linear-gradient(180deg, silver -7%, pink 80%, skyblue 127%);的效果是…

C# —— 简单工厂设计模式详述

一、基本概念 众所周知&#xff0c;C#是一种面向对象的语言&#xff0c;而其中封装&#xff0c;继承&#xff0c;多态是面向对象的三大重要特征&#xff0c;简单工厂的设计模式则可以完全体现这些特征。要彻底理解这个模式&#xff0c;必须要先将封装&#xff08;访问修饰符的…

工业相机常用类型详述

一、工业相机定义 工业相机是应用于工业领域、安防和交通等对相机要求较高领域的摄像机&#xff0c;功能就是将光信号转变成有序的电信号&#xff0c;此信号经过模数转换为数字信号&#xff0c;然后传递给图像处理器。与一般的家用相机相比&#xff0c;其具有更高的稳定性能&a…

机器学习——SVM之python实现数据样本标准化和归一化

目录 一、标准化和归一化的目的 1、标准化 2、归一化 二、标准化和归一化常用的理论公式 1、归一化 2、标准化 三、python实现SVM样本数据标准化和归一化 1、标准化 2、归一化 本文源代码&#xff1a;《机器学习——支持向量机SVM之python实现简单实例一》 一、标准化…

[黑群晖经典教程] 一步一步建立自己的黑群晖

【申明&#xff1a;本文并非本人所作&#xff0c;为内部网络中一位大神所写&#xff0c;个人觉得写得很好&#xff0c;遂原文搬了过来&#xff0c;如有侵犯原作者的权利&#xff0c;请及时与我联系】 PS:有好几个兄弟觉得我擅自转发&#xff0c;不是很妥。解释一下&#xff1a;…

C++和Opencv4.5 实现全景图像拼接

前言 最近刚下了最新版的opencv4.5&#xff0c;急不可待的试下操作&#xff0c;就用了opencv自带的Stitcher类拼接下图像&#xff0c;结果傻眼了&#xff0c;程序显示Stitcher没有createDefault成员&#xff0c;看了好久&#xff0c;终于找到了解决方法。 Stitcher原理 Stit…

机器学习——python实现SVM模型w,b的查看

基于源代码&#xff1a;《机器学习——支持向量机SVM之python实现简单实例一》进行讲解 1、线性模型 这里以二特征三类&#xff0c;一对多策略为案例 kernel “linear”&#xff1a;线性核&#xff0c;参数有w&#xff0c;b 线性模型的决策边界是&#xff1a;w0iTx0i w1i…