Hdu2425-Hiking Trip(优先队列搜索)
#include<cstdio> #include<cstring> #include<string> #include<iostream> #include<sstream> #include<algorithm> #include<utility> #include<vector> #include<set> #include<map> #include<queue> #include<cmath> #include<iterator> #include<stack> using namespace std; const int INF=1e9+; const double eps=1e-; const int maxn=; int row,col,bex,bey,endx,endy; int P,S,T; int dx[]={-,,,},dy[]={,-,,}; //方向数组 char maze[maxn][maxn]; //地图 bool vis[maxn][maxn]; //标记数组 bool in(int x,int y){ return x>=&&x<row&y>=&&y<col; }//是否在界内 struct node { int x,y,d; node(int x=,int y=,int d=):x(x),y(y),d(d){} bool operator < (const node& t) const { return d>t.d; //越小的优先级越高 } }; priority_queue<node> que; int solve() { memset(vis,false,sizeof(vis)); while(!que.empty()) que.pop(); que.push(node(bex,bey,)); vis[bex][bey]=true; while(!que.empty()) { node t=que.top(); que.pop(); int x=t.x,y=t.y,d=t.d; if(x==endx&&y==endy) return d; for(int i=;i<;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(!in(nx,ny)||maze[nx][ny]=='@'||vis[nx][ny]) continue; //越界或是石头或已经被标记过 vis[nx][ny]=true; //标记 int nd=d; if(maze[nx][ny]=='T') nd+=T; else if(maze[nx][ny]=='.') nd+=S; else if(maze[nx][ny]=='#') nd+=P; que.push(node(nx,ny,nd)); //丢到优先队列里去 } } return -; } int main() { int Case=; while(scanf("%d%d",&row,&col)!=EOF) { scanf("%d%d%d",&P,&S,&T); for(int i=;i<row;i++) scanf("%s",maze[i]); scanf("%d%d%d%d",&bex,&bey,&endx,&endy); int ans=solve(); printf("Case %d: %d\n",++Case,ans); } return ; }
Hdu2425-Hiking Trip(优先队列搜索)的更多相关文章
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- hdu 2425 Hiking Trip (bfs+优先队列)
Problem Description Hiking in the mountains is seldom an easy task for most people, as it is extreme ...
- hdu 2425 Hiking Trip
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2425 Hiking Trip Description Hiking in the mountains ...
- HDU2425:Hiking Trip(BFS+优先队列)
给出一个地图,地图有四种路面,经过每种路面花费的时间不同,问从起点到终点所花费的最少时间是多少 把到各个点的花费存入队列中,然后弹出,即可得到最小 Sample Input 4 6 1 2 10 T. ...
- HDU2425:Hiking Trip(简单bfs,优先队列实现)
题目: 传送门 题意很简单就不解释了,水题一道. #include <iostream> #include <string.h> #include <stdio.h> ...
- HDU 1896 Stones --优先队列+搜索
一直向前搜..做法有点像模拟.但是要用到出队入队,有点像搜索. 代码: #include <iostream> #include <cstdio> #include <c ...
- HDU 5360 Hiking(优先队列)
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- 【HDOJ】2425 Hiking Trip
优先级队列+BFS. #include <iostream> #include <cstdio> #include <cstring> #include <q ...
- hdu 1026 Ignatius and the Princess I【优先队列+BFS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- poj1185:炮兵阵地(状压dp)
也算是比较基础的状压dp了,跟做过的第二道比较又稍微复杂了一点 需要记录之前两行的状态.. 统计结果也稍有不同 另外还学习了一个得到一个整数二进制位 1 的个数的位运算方法 详见代码: #includ ...
- C# - List操作- 去掉重复
ChangeList里面会有重复的数据,这时可以这样去掉重复的item // Remove duplicated info var dup = ChangeList.Where(item => ...
- EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充
EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...
- python进阶之路4.1---生成器与迭代器
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Hacker(20)----手动修复Windows系统漏洞
Win7系统中存在漏洞时,用户需要采用各种办法来修复系统中存在的漏洞,既可以使用Windows Update修复,也可使用360安全卫士来修复. 一.使用Windows Update修复系统漏洞 Wi ...
- NFinal 揭秘之控制器
用NFinal框架开发的项目类似于MVC的那种开发方式,有Controller层.Model层.View层,还包括表现层Web层,在NFinal开发的项目中真正执行的代码也就是Web层中的代码,Web ...
- Memory Analyzer Blog
引用:http://memoryanalyzer.blogspot.jp/2008/05/automated-heap-dump-analysis-finding.html Dienstag, 27. ...
- 定义block块
一: 工程图 二: 代码区 AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...
- PDO事务管理DEMO
try { $dsn = "mysql:host=127.0.0.1;port=3306;dbname=dab"; $pdo = new PDO($dsn, 'root', '') ...
- C/C++中的虚析构函数和私有析构函数的使用
代码: #include <iostream> using namespace std; class A{ public: A(){ cout<<"construct ...