hdu 2425 Hiking Trip (bfs+优先队列)
You've obtained the area Green's in as an R * C map. Each grid in the map can be one of the four types: tree, sand, path, and stone. All grids not containing stone are passable, and each time, when Green enters a grid of type X (where X can be tree, sand or path), he will spend time T(X). Furthermore, each time Green can only move up, down, left, or right, provided that the adjacent grid in that direction exists.
Given Green's current position and his destination, please determine the best path for him.
There is a blank line after each test case. Input ends with End-of-File.
1 2 10
T...TT
TTT###
TT.@#T
..###@
0 1 3 0
4 6
1 2 2
T...TT
TTT###
TT.@#T
..###@
0 1 3 0
2 2
5 1 3
T@
@.
0 0 1 1
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int n,m;
int vp,vs,vt;
int k1,k2,e1,e2;
char data[][];
int visit[][];
int to[][]={{,},{-,},{,},{,-}}; struct node
{
int x,y;
int step;
friend bool operator < (node a,node b)
{
return a.step>b.step;
}
}; int go(int i,int j)
{
if(<=i&&i<n&&<=j&&j<m&&data[i][j]!='@'&&visit[i][j]==)
return ;
else return ;
} int bfs()
{
node st,ed;
priority_queue<node> q;
st.x=k1;
st.y=k2;
st.step=;
q.push(st);
memset(visit,,sizeof(visit));
visit[k1][k2]=;
while(!q.empty())
{
st=q.top();
q.pop();
if(st.x==e1&&st.y==e2)
{
cout<<st.step<<endl;
return ;
}
for(int i=;i<;i++)
{
ed.x=st.x+to[i][];
ed.y=st.y+to[i][];
if(go(ed.x,ed.y))
{
visit[ed.x][ed.y]=;
if(data[ed.x][ed.y]=='T')
ed.step=st.step+vt;
if(data[ed.x][ed.y]=='.')
ed.step=st.step+vs;
if(data[ed.x][ed.y]=='#')
ed.step=st.step+vp;
q.push(ed);
}
}
}
cout<<"-1"<<endl;
return ;
} int main()
{
int k=;
while(cin>>n>>m)
{
k++;
cin>>vp>>vs>>vt;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
cin>>data[i][j];
cin>>k1>>k2>>e1>>e2;
cout<<"Case "<<k<<": ";
bfs();
}
return ;
}
hdu 2425 Hiking Trip (bfs+优先队列)的更多相关文章
- hdu 2425 Hiking Trip
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2425 Hiking Trip Description Hiking in the mountains ...
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- HDU2425:Hiking Trip(BFS+优先队列)
给出一个地图,地图有四种路面,经过每种路面花费的时间不同,问从起点到终点所花费的最少时间是多少 把到各个点的花费存入队列中,然后弹出,即可得到最小 Sample Input 4 6 1 2 10 T. ...
- HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)
题目地址:HDU 1428 先用BFS+优先队列求出全部点到机房的最短距离.然后用记忆化搜索去搜. 代码例如以下: #include <iostream> #include <str ...
- HDU 1242 Rescue (BFS+优先队列)
题意:X代表卫兵,a代表终点,r代表起始点,.代表路,#代表墙,走过.要花费一秒,走过x要花费2秒,求从起点到终点的最少时间. 析:一看到样例就知道是BFS了吧,很明显是最短路径问题,不过又加了一个条 ...
- 2015多校第6场 HDU 5360 Hiking 贪心,优先队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5360 题意:给定n个人,现在要邀请这些人去远足,但每个人同意邀请的条件是当前已经同意去远足的人数c必须 ...
- HDU 5360——Hiking——————【贪心+优先队列】
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- hdu 5040 Instrusive【BFS+优先队列】
11733274 2014-09-26 12:42:31 Accepted 5040 62MS 1592K 4848 B G++ czy 先转一个优先队列的用法: http://www.cppblog ...
- hdu.1254.推箱子(bfs + 优先队列)
推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
随机推荐
- dwr推送技术深入研究
DWR 工作原理: 是通过动态把 Java 类生成为 Javascript.它的代码就像 Ajax 一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR 负责数据的传递和转换. ...
- 关于spring autowrie的5种方式
spring自动注入有5中方式,分别是: byName:根据自动注入类中的对象名字,会到配置文件中找相关id或者name的bean,如果找不到则不会匹配,如果找到多个bean,则会报错. byType ...
- Passing Reference by value
今天查bug的时候,遇到一个问题,一个Dictionary<int[],string>数据结构,在使用key取它的value时: var tempVar = _dic[key]; 发生崩溃 ...
- sharepoint 2013基于AD的Form表单登录(三)——选择用户时,屏蔽掉AD。
//来源:http://www.cnblogs.com/lrforever/p/3695820.html 隐藏AD人员选择,$ad.IsVisible设置为true,则显示出AD里用户 $cpm = ...
- abowman
http://abowman.com/google-modules/ball-clock/
- linux系统被入侵后处理经历【转】
背景 操作系统:Ubuntu12.04_x64 运行业务:公司业务系统,爬虫程序,数据队列. 服务器托管在外地机房. 突然,频繁收到一组服务器ping监控不可达邮件,赶紧登陆zabbix监控系统查看流 ...
- 移动端ios电话号码
<meta name="format-detection" content="telephone=no"> <meta http-equiv= ...
- JavaScript 作用域 匿名函数 模仿块级作用域(私有作用域)
作用域 对于有块级作用域的语言来说,for语句中定义并初始化的变量i在循环外是无法访问的. 而javascript没有块级作用域,for语句中定义的变量i在循环结束后,依旧会存在于循环外部的执行环境( ...
- CSS 选择器之基本选择器 属性选择器 伪类选择器
CSS 选择器 常见的选择器列表图 CSS选择器笔记 基本选择器 通配符选择器(*) 元素选择器(E) 类选择器(.className) 所有浏览器都支持类选择器,但多类选择器(.classNa ...
- jfinal获取服务器的IP和端口
String serverIp = getRequest().getServerName(); Integer serverPort = getRequest().getServerPort();