h1026 BFS(打印x与路径)
题意:
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'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 ...
随机推荐
- jquery一句话实现快速搜索功能
jquery一句话实现快速搜索功能 //快捷搜索公共方法,其中obj为显示行的子节点function filter(obj, filterNameValue){ $(obj).hide().filte ...
- php 获取随机数的几个方式
php 获取随机数的几个方式 1.直接获取从min-max的数,例如1-20:$randnum = mt_rand(1, 20); 2.在一个数组里面随机选择一个(验证码的时候需要字母.数字混合的情况 ...
- tomcat性能调优 大赞
从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü MemoryUsage 我 们也在第三天的学习中对Apa ...
- 设置redis访问密码
在服务器上,这里以linux服务器为例,为redis配置密码. 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效,) (1)首先进入redi ...
- 20145328 《网络对抗技术》MSF基础应用
20145328 <网络对抗技术>MSF基础应用 --------------先提交,后续完成------------------
- 20145333茹翔《网络对抗技术》Exp6 信息搜集技术
20145333茹翔<网络对抗技术>Exp6 信息搜集技术 实验内容 本次实验的目标是掌握信息搜集的最基础技能.具体有(1)各种搜索技巧的应用(2)DNS IP注册信息的查询 (3)基本的 ...
- SPOJ Prime or Not - 快速乘 - 快速幂
Given the number, you are to answer the question: "Is it prime?" Solutions to this problem ...
- 在ubuntu16.04上搭建视频服务器
推荐方案三:超级简单 方案一.hls (缺陷:需要花很多时间切片) 1.Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release ...
- 【译】第1节--- EF Code First 介绍
原文:http://www.entityframeworktutorial.net/code-first/entity-framework-code-first.aspx 本教程涵盖了code fir ...
- UVa 10340 子序列
https://vjudge.net/problem/UVA-10340 题意: 输入两个字符串s和t,判断是否可以从t中删除0个或多个字符得到字符串s. 思路: 很水的题... #include&l ...