hdu 1026 Ignatius and the Princess I(BFS+优先队列)
传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1026
Ignatius and the Princess I
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 21841 Accepted Submission(s): 7023
Special Judge
1.Ignatius can only move in four directions(up, down, left, right), one step per second. A step is defined as follow: if current position is (x,y), after a step, Ignatius can only stand on (x-1,y), (x+1,y), (x,y-1) or (x,y+1).
2.The array is marked with some characters and numbers. We define them like this:
. : The place where Ignatius can walk on.
X : The place is a trap, Ignatius should not walk on it.
n : Here is a monster with n HP(1<=n<=9), if Ignatius walk on it, it takes him n seconds to kill the monster.
Your task is to give out the path which costs minimum seconds for Ignatius to reach target position. You may assume that the start position and the target position will never be a trap, and there will never be a monster at the start position.
.XX.1.
..X.2.
2...X.
...XX.
XXXXX.
5 6
.XX.1.
..X.2.
2...X.
...XX.
XXXXX1
5 6
.XX...
..XX1.
2...X.
...XX.
XXXXX.
1s:(0,0)->(1,0)
2s:(1,0)->(1,1)
3s:(1,1)->(2,1)
4s:(2,1)->(2,2)
5s:(2,2)->(2,3)
6s:(2,3)->(1,3)
7s:(1,3)->(1,4)
8s:FIGHT AT (1,4)
9s:FIGHT AT (1,4)
10s:(1,4)->(1,5)
11s:(1,5)->(2,5)
12s:(2,5)->(3,5)
13s:(3,5)->(4,5)
FINISH
It takes 14 seconds to reach the target position, let me show you the way.
1s:(0,0)->(1,0)
2s:(1,0)->(1,1)
3s:(1,1)->(2,1)
4s:(2,1)->(2,2)
5s:(2,2)->(2,3)
6s:(2,3)->(1,3)
7s:(1,3)->(1,4)
8s:FIGHT AT (1,4)
9s:FIGHT AT (1,4)
10s:(1,4)->(1,5)
11s:(1,5)->(2,5)
12s:(2,5)->(3,5)
13s:(3,5)->(4,5)
14s:FIGHT AT (4,5)
FINISH
God please help our poor hero.
FINISH
#include<bits/stdc++.h>
using namespace std;
#define max_v 105
#define INF 99999999
struct node
{
int x,y;
int sum;
friend bool operator<(const node &a,const node &b)
{
return a.sum>b.sum;
}
};
struct nn
{
int x,y;
}pre[max_v][max_v];
int f[][]={{,},{-,},{,},{,-}};
char s[max_v][max_v];
int ptr[max_v][max_v];
priority_queue <node> Q;
int n,m,ans;
int bfs()
{
int i;
while(!Q.empty())
{
Q.pop();
}
node temp,tx;
temp.x=;
temp.y=;
temp.sum=;
ptr[][]=;
Q.push(temp);
while(!Q.empty())
{
node t=Q.top();
Q.pop();
if(t.x==n-&&t.y==m-)
{
ans=t.sum;
return ;
}
for(i=;i<;i++)
{
int a=t.x+f[i][];
int b=t.y+f[i][];
if(a>=&&a<n&&b>=&&b<m&&s[a][b]!='X')
{
tx.x=a;
tx.y=b;
tx.sum=t.sum+;
if(s[a][b]!='.')
tx.sum+=s[a][b]-'';
if(ptr[a][b]>tx.sum)
{
ptr[a][b]=tx.sum;
pre[a][b].x=t.x;
pre[a][b].y=t.y;
Q.push(tx);
}
}
}
}
return ;
}
void pf(int x,int y)
{
int i;
if(x==&&y==)
return ;
pf(pre[x][y].x,pre[x][y].y);
printf("%ds:(%d,%d)->(%d,%d)\n",ptr[pre[x][y].x][pre[x][y].y]+,pre[x][y].x,pre[x][y].y,x,y);
if(s[x][y]!='.')
{
for(i=;i<=s[x][y]-'';i++)
{
printf("%ds:FIGHT AT (%d,%d)\n",ptr[pre[x][y].x][pre[x][y].y]++i,x,y);
}
}
}
int main()
{
int i,j;
while(~scanf("%d %d",&n,&m))
{
for(i=;i<n;i++)
{
scanf("%s",s[i]);
}
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
ptr[i][j]=INF;
}
}
if(bfs())
{
printf("It takes %d seconds to reach the target position, let me show you the way.\n",ans);
pf(n-,m-);
}else
{
printf("God please help our poor hero.\n");
}
printf("FINISH\n");
}
return ;
}
hdu 1026 Ignatius and the Princess I(BFS+优先队列)的更多相关文章
- hdu 1026 Ignatius and the Princess I (bfs+记录路径)(priority_queue)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1026 Problem Description The Princess has been abducted ...
- 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 ...
- hdu 1026:Ignatius and the Princess I(优先队列 + bfs广搜。ps:广搜AC,深搜超时,求助攻!)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU 1026 Ignatius and the Princess I(BFS+记录路径)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1026 Ignatius and the Princess I
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1026 Ignatius and the Princess I Description The Prin ...
- HDU 1026 Ignatius and the Princess I(BFS+优先队列)
Ignatius and the Princess I Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &am ...
- hdu 1026 Ignatius and the Princess I(bfs)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1026 Ignatius and the Princess I 搜索,输出路径
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu1026.Ignatius and the Princess I(bfs + 优先队列)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
随机推荐
- IntelliJ IDEA+Mysql connecter/j JDBC驱动连接
在IntelliJ IDEA中用connecter/j jdbc驱动连接MYSQL 以下是解决过程,待整合...有点懒,有空再改 官方文档:https://www.cnblogs.com/cn-chy ...
- JFrame自适应大小
pack();函数调用PreferedSize(); 所以对于组件要setPreferedSize();
- maven <repositories>标签,<pluginRepositories>标签
在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等.每建立一个项 ...
- 手贱--npm 误改全局安装路径
修改全局安装命令: 通过 npm config set prefix "目录路径" 来设置. 通过 npm config get prefix 来获取当前设置的目录. 我的node ...
- php扩展库
php调用C/C++动态链接库 字数997 阅读28 评论0 喜欢0 本人最近在找实习,移动开发方向.有意者可直接与本人联系.谢谢! 一.简介 一般而言,php速度已经比较快,但是,对于一些较高级开发 ...
- div,css&table布局有哪些区别
DIV+CSS布局与TABLE布局相比,有哪些优点? 1.代码少,页面文件小,下载快 Div+css的布局现在属于国际W3C标准,table不是. 都知道用div的布局代码肯定少,所有的样式都在CSS ...
- DB DBS 和DBMS区别
DB:是指datebase(数据库) DBS:是指datebase systerm (数据库系统) DBMS:是指datebase mangement systerm(数据库管理系统)区别:数据库 ...
- ArcEngine交互画线
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
- hdu 2063 过山车(模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others) Me ...
- 谈谈CSS性能
CSS性能优化 1.衡量属性和布局的消耗代价: 2.探索W3C的性能优化新规范: 3.用测试数据判断优化策略. 慎重选择高消耗的样式 1.box-shadows; 2.border-radius; 3 ...