HDU 2612 (2次BFS,有点小细节)
Problem Description
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.
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
Y.#@
....
.#..
@..M Y.#@
....
.#..
@#.M Y..@.
.#...
.#...
@..M.
#...#
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <queue>
#define min(x,y) ((x)<(y)? (x):(y))
using namespace std; const int INF=0x3f3f3f3f;
const int maxn=;
char Map[maxn][maxn];
int d1[maxn][maxn], d2[maxn][maxn];
int dx[]={,,,-}, dy[]={,-,,}; int main ()
{
//freopen("in.txt", "r", stdin);
int n,m;
while(cin>>n>>m)
{
int x1,y1,x2,y2;
for(int i=; i<maxn; i++)
for(int j=; j<maxn; j++)
{
d1[i][j]=d2[i][j]=;
} for(int i=; i<n; i++)
for(int j=; j<m; j++)
{
cin>>Map[i][j];
if(Map[i][j]=='Y')
x1=i, y1=j;
if(Map[i][j]=='M')
x2=i, y2=j;
} queue<pair<int, int> > que;
pair<int, int> p;
p.first=x1, p.second=y1;
que.push(p);
while(que.size())
{
p=que.front(); que.pop();
for(int i=; i<; i++)
{
int nx=p.first+dx[i], ny=p.second+dy[i];
if( nx>=&&nx<n&&ny>=&&ny<m && (Map[nx][ny]=='.'||Map[nx][ny]=='@') && d1[nx][ny]==)
{
que.push(make_pair(nx,ny));
d1[nx][ny]=d1[p.first][p.second]+;
}
}
} p.first=x2, p.second=y2;
que.push(p);
while(que.size())
{
p=que.front(), que.pop();
for(int i=; i<; i++)
{
int nx=p.first+dx[i], ny=p.second+dy[i];
if( nx>=&&nx<n&&ny>=&&ny<m && (Map[nx][ny]=='.'||Map[nx][ny]=='@') && d2[nx][ny]==)
{
que.push(make_pair(nx,ny));
d2[nx][ny]=d2[p.first][p.second]+;
}
}
} int ans=INF;
for(int i=; i<n; i++)
for(int j=; j<m; j++)
if(Map[i][j]=='@')
{
if(d1[i][j]!=&&d2[i][j]!=)
//这个判断之前没有想到,一直wa,后来看了下discuss,才发现这个问题,
//发现这个问题后,我最先d初始化为0改成初始化d为INF=0x3f3f3f3f,会溢出输出负数,
//发现自己很sb,算dis,d肯定初始化为0呀...,我看到这个min(d1[i][j]+d2[i][j], ans)有问题,就想到初始化为INF......
ans=min(d1[i][j]+d2[i][j], ans);
}
cout<<ans*<<endl;
}
return ;
}
HDU 2612 (2次BFS,有点小细节)的更多相关文章
- hdu 2612 多终点BFS
Find a way Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at ...
- HDU.2612 Find a way (BFS)
HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...
- BFS(最短路) HDU 2612 Find a way
题目传送门 /* BFS:和UVA_11624差不多,本题就是分别求两个点到KFC的最短路,然后相加求最小值 */ /***************************************** ...
- HDU 2612 Find a way(双向bfs)
题目代号:HDU 2612 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 M ...
- HDU 2612 Find a way(找条路)
HDU 2612 Find a way(找条路) 00 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面
Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...
- Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)
在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...
- Oracle Sales Cloud:报告和分析(BIEE)小细节1——创建双提示并建立关联(例如,部门和子部门提示)
Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的客户商机管理系统,通过提供丰富的功能来帮助提高销售效率,更好地去了解客户,发现和追踪商机,为最终的销售成交 (d ...
随机推荐
- php直接执行linux 命令
注意你可以使用的命令只能是php这个用户组的权限和范围,注意这个linux 执行的,windows也是可以对应dos命令,但是打印格式不是很好看 //$output = `ls -al`; //$ou ...
- 使用FreeMarker生成word文档
生成word文档的框架比较多,比如poi,java2word,itext和freemarker. 调研之后,freemarker来实现挺简单的,具体步骤如下: 1. 新建word文档,占位符用${}, ...
- ionic3 创建项目至apk打包全过程教程
主要流程: 安装node.js --> 安装jdk --> 安装AndroidSDK --> 安装cordova --> 安装ionic --> 创建项 ...
- js多选下拉框
1.js原生实现 1.1:引用JS文件 /*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ !function(a,b ...
- Java开发想尝试大数据和数据挖掘,如何规划学习?
大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司. 现在已 ...
- vs自定义类模板
.找到VS安装目录,我的目录是:C:Program Files (x86)Microsoft Visual Studio 12.0 .在C:Program Files (x86)Microsoft V ...
- loadView
loadView在View为nil时调用,早于ViewDidLoad,通常用于代码实现控件,收到内存警告时会再次调用.loadView默认做的事情是:如果此VIewcontroller存在一个对应的n ...
- 基于Enterprise Architect完成数据库建模
基于Enterprise Architect完成数据库建模 “工欲善其事必先利其器”,Enterprise Architect是一款非常便利的设计工具,目前我也是刚刚使用没多久,进行过系统设计.UML ...
- 通过android studio的gradle强制cmake输出命令详情
https://stackoverflow.com/questions/43439549/force-cmake-in-verbose-mode-via-gradle-and-the-android- ...
- python数据结构-如何快速找到多个字典中的公共键
如何快速找到多个字典中的公共键 问题举例 统计每轮都进球的球员: 第1轮{‘tom’:1, 'meixi':2} 第2轮{‘coco’:3, 'meixi':4, 'marton':2} 第3轮{'c ...