题意:
Ignatius and the Princess I
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18410 Accepted Submission(s):
5929
Special Judge
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
#define inf 0x3f3f3f3f
char e[105][105];
int /*book[105][105],*/dis[105][105];
int n,m,sumn;
int fx[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int flag;
struct node
{
int x,y,sum;
};
void bfs()
{
queue<node> q;
node next,cur;
node *cu;
cu=&cur;
cu->x=cu->y=cu->sum=0;
//cur.x=cur.y=cur.sum=0;
if (e[0][0]!='.') cu->sum=e[0][0]-'0';
dis[0][0]=cu->sum;
q.push(*cu);
while(!q.empty()){
for (int i=0;i<4;i++){*cu=q.front();
int dx=fx[i][0]+cur.x;
int dy=fx[i][1]+cur.y;
if (dx<0||dy<0||dx>=n||dy>=m||e[dx][dy]=='X') continue;
if (e[dx][dy]=='.') cu->sum+=1;
else cu->sum=cu->sum+1+e[dx][dy]-'0';
if (cu->sum<dis[dx][dy]) dis[dx][dy]=cu->sum; //更新此点最小时间值
else continue;
if (dx==n-1&&dy==m-1) {
if(cu->sum<sumn) sumn=cu->sum; //更新到目标点的最小时间
}
cu->x=dx;
cu->y=dy;
q.push(*cu);
}
q.pop();
}
}
void print(int x,int y,int sum) //逆序打印
{
int i,j,tim,k,dx,dy;
if (sum==0) return;
if (e[x][y]=='.') tim=0;
else tim=e[x][y]-'0';
for (i=0;i<4;i++){
dx=x+fx[i][0];
dy=y+fx[i][1];
if (dx<0||dy<0||dx>=n||dy>=m||e[dx][dy]=='X') continue;
if (dis[dx][dy]+1+tim==dis[x][y]) {print(dx,dy,sum-1-tim);break;}
}
if (dy>=0) printf("%ds:(%d,%d)->(%d,%d)\n",++flag,dx,dy,x,y);
for (int l=1;l<=tim;l++) printf("%ds:FIGHT AT (%d,%d)\n",++flag,x,y);
}
int main()
{
int i,j;
while (scanf("%d%d",&n,&m)!=EOF){sumn=inf;
flag=0;
memset(dis,inf,sizeof(dis));//getchar();
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf(" %c",&e[i][j]);
//cin>>e[i][j];
bfs();
if (sumn==inf) printf("God please help our poor hero.\n");
else {
printf("It takes %d seconds to reach the target position, let me show you the way.\n",sumn);
print(n-1,m-1,sumn);
}
printf("FINISH\n");
}
return 0;
}
h1026 BFS(打印x与路径)的更多相关文章
-
POJ 3414 Pots ( BFS , 打印路径 )
题意: 给你两个空瓶子,只有三种操作 一.把一个瓶子灌满 二.把一个瓶子清空 三.把一个瓶子里面的水灌到另一个瓶子里面去(倒满之后要是还存在水那就依然在那个瓶子里面,或者被灌的瓶子有可能没满) 思路: ...
-
UVA-816.Abbott&#39;s Tevenge (BFS + 打印路径)
本题大意:给定一个迷宫,让你判断是否能从给定的起点到达给定的终点,这里起点需要输入起始方向,迷宫的每个顶点也都有行走限制,每个顶点都有特殊的转向约束...具体看题目便知... 本题思路:保存起点和终点 ...
-
Codeforces 3A-Shortest path of the king(BFS打印路径)
A. Shortest path of the king time limit per test 1 second memory limit per test 64 megabytes input s ...
-
BFS+打印路径
题目是给你起点sx,和终点gx:牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1. 瞬移:John花一分钟由任意点X移动到点2*X. 你要输出最短步数及打印路径 ...
-
HDU 1026(迷宫 BFS+打印)
题意是要穿过一个迷宫并且将每一步打印出来. 用宽搜的方法找到路径,在 vis 中存一下方向,只是这题被看到的一种不太对的运算符重载坑了很久...... 代码如下: #include <bits/ ...
-
Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
-
迷宫问题 (bfs广度优先搜索记录路径)
问题描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...
-
BFS和DFS记录路径
DFS记录路径的意义好像不大,因为不一定是最短的,但是实现起来却很简单. #include<math.h> #include<stdio.h> #include<queu ...
-
搜索(BFS)---最短单词路径
最短单词路径 127. Word Ladder (Medium) Input: beginWord = "hit", endWord = "cog", word ...
随机推荐
-
OpenCV人脸识别Eigen算法源码分析
1 理论基础 学习Eigen人脸识别算法需要了解一下它用到的几个理论基础,现总结如下: 1.1 协方差矩阵 首先需要了解一下公式: 共公式可以看出:均值描述的是样本集合的平均值,而标准差描述的则是样本 ...
-
ASP.NET中Ajax的用法
在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Aja ...
-
【blade04】用面向对象的方法写javascript坦克大战
前言 javascript与程序的语言比如C#或者java不一样,他并没有“类”的概念,虽然最新的ECMAScript提出了Class的概念,我们却没有怎么用 就单以C#与Java来说,要到真正理解面 ...
-
BZOJ1264——[AHOI2006]基因匹配Match
1.题意,求最长公共子序列,每个数字在序列中都出现5次 2.分析:最长公共子序列的标准解法是dp,$O(n^2)$过不了的,然后我们发现判断哪两个位置优化的地方用$5n$就可以搞定了,那么我们用BIT ...
-
C#类、接口、虚方法和抽象方法0322
虚拟方法和抽象方法有什么区别与联系: 1.抽象方法只有声明没有实现代码,需要在子类中实现:虚拟方法有声明和实现代码,并且可以在子类中重写,也可以不重写使用父类的默认实现. 2.抽象类不能被实例化(不可 ...
-
SSIS_TXT有规则资料导入到EXCEL
SSIS开发需要完全安装sqlserver.本次demo是sqlserver2008. 1.创建项目 2.解决方案打开如图所示. 3.拉取一个序列容器,一个数据流任务. 4.在数据流任务点击.拉取一个 ...
-
Token防止表单重复提交和CSRF攻击
Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...
-
php7-编译安装参数
./configure \--with-fpm-user=www \--with-fpm-group=www \--prefix=/usr/local/php7 \--with-config-file ...
-
VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别
在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...
-
makefile中一些编译器选项
Libraries Static Libraries a collection of ordinary object files (目标文件的集合) loaded at program link ti ...