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 ...
随机推荐
- 怎样理解JAVA的“构造方法”和“主方法”
在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法.主方法是类的入口点,它定义了程序从何处开始: 主方法提供对程序流向的控制,Java编译器通过主方法来执行程序.那么,下面一起来看一下关 ...
- Eclipse+pydev+手动安装
1.Eclipse中手动安装pydev插件 解决:Eclipse版本中的windows-performance下面无法显示pydev的情况 1.Eclipse版本是:Version: Luna Ser ...
- java_工厂模式
定义: 初学者总是把所有的代码写在一个类里面,这样是非常危险的,因为所有错误集中在一个类里了,而且代码一长,调试就很困难 所以参照工厂流水线,分车间分模块来写代码,在实际操作中也就是说将代码模块化,封 ...
- Socket 的网络编程
socket 网络编程的服务端: 1) 创建socket 套接字. 2) 和socket绑定主机地址和端口 3) socket 主动监听端口,看又没有来连接. 4) 当执行到 accept() 时, ...
- sourceTree回退撤销commit
https://blog.csdn.net/gang544043963/article/details/71511958
- 洛谷P4396 作业 [AHOI2013] 莫队
正解:莫队 解题报告: 传送门! 天呐太久没做莫队了连板子都认不出来了,,,所以复健下做下莫队的题目QAQ 就很板子鸭,和莫队板子比好像只有一个离散化,,,?就不讲了QAQ 等下直接放代码QAQ ov ...
- 【JVM】-NO.110.JVM.1 -【GC垃圾收集器】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- Spring框架的第三天
## Spring框架的第三天 ## ---------- **课程回顾:Spring框架第二天** 1. IOC的注解方式 * @Value * @Resource(name="" ...
- nginx rewrite 指令
ginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else. 该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录, nginx安装方 ...
- vmstat性能分析介绍
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...