时间限制: 1 Sec  内存限制: 128 MB
提交: 138  解决: 52
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

伯罗奔尼撒战争是以雅典为首的提洛同盟与以斯巴达为首的伯罗奔尼撒联盟之间的一场战争。这场战争从前431年一直持续到前404年,使得绝大多数周边城邦必须加入其中一方的阵营。战争第一阶段(BC431-BC421),雅典在伯里克利的领导之下,凭借强大的海军,采取陆地上防御在海上进攻的策略。而斯巴达在阿基达摩斯二世的领导之下,率领它令人畏惧的战士进行陆地强攻。两个强邦侧重点不同的军事力量导致了战争第一阶段的僵持局面。
话说,有一天阿基达摩斯二世决定率兵进攻雅典的一个居民点阿提卡,当他们满怀斗志的奔向阿提卡的时候,殊不知他们正走向伯利克里所设下的迷宫陷阱之中。当他们发现时,已为时已晚。
As you know, the Magpie Festival is comging!
为了早日返回斯巴达,阿基达摩斯二世立即让所有的斯巴达勇士去需找迷宫的出口E。现在他们被困在迷宫的S点,迷宫中“.”表示空地,可以通过,“#”表示墙,不能通过,每次只能向上下左右四个方向移动,每移动一个单位距离需要耗费一个单位时间,所有斯巴达勇士的移动速度相同。现在请你计算一下他们最短需要多少时间才能找到迷宫的出口。
PS:假设迷宫中每个点可以容纳的人数没有限制,每个斯巴达勇士的行动方向之间没有影响。

输入

第一行有一个整数t(0=<t<=100),代表有t组测试数据。
每组测试数据第一行输入三个数n,m, c,(2=<m<=n<=500,100=<c<=10000)分别代表迷宫的长度和宽度,以及被困迷宫的斯巴达勇士数(不包括阿基达摩斯二世)。下面m行每行有n个字符用来表示迷宫地图。详细输入格式见样例。

输出

输出一个整数,表示找到迷宫出口的最短时间,每组输出占一行。如不能找到出口输入-1

样例输入

1
5 5 100
#####
#S..#
#...#
#...E
#####

样例输出

5

这题裸的,下一题有点改模板


#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
#define INF 10000000
using namespace std;
typedef pair<int,int> P;  //结构体状态,表示该点的坐标
int n,m,k;
int dp[505][505];  //表示起点到其他点的距离
char c[505][505];  //迷宫
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
int sx,sy,gx,gy;
int bfs()
{queue<P> que;//创建一个里面是结构体的队列//所有的位置初始化为INFfor(int i=0;i<n;i++)for(int j=0;j<m;j++)dp[i][j]=INF;//从起点开始寻找,所以将起点坐标添加到队列中que.push(P(sx,sy));//将该位置初始化为0dp[sx][sy]=0;while(que.size()){//从队列的最前端去除元素P p=que.front();que.pop();//如果取出的状态是终点,结束遍历if(p.first==gx && p.second == gy)break;//四个方向循环for(int i=0;i<4;i++){//移动之后的坐标nx,nyint nx=p.first+dx[i],ny=p.second+dy[i];  //判断是否可以移动,以及是否访问过if(nx>=0 && nx<n && ny>=0 && ny<m && c[nx][ny]!='#' && dp[nx][ny]==INF){//如果可以访问的话,添加到队列中,并且到该位置的距离为到p的距离+1que.push(P(nx,ny));dp[nx][ny]=dp[p.first][p.second]+1;}}}return dp[gx][gy];
}
int main()
{int t;while(scanf("%d",&t)!=EOF){scanf("%d%d%d", &n, &m, &k);getchar();            //吸收换行符for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%c",&c[i][j]);if(c[i][j]=='S'){     //记录起始点sx=i;sy=j;}if(c[i][j]=='E'){    //记录终点gx=i;gy=j;}}getchar();      //吸收换行符}int res=bfs();if(res==INF)printf("-1\n");else {printf("%d\n",res);}}return 0;
}

问题 E: 古希腊之争(一)(bfs迷宫裸模板)相关推荐

  1. BFS【古希腊之争(二)】(bfs+优先队列)

    题目描述 话说,年轻的斯巴达勇士们终于走出迷宫,取得胜利并顺利赶了回来.可是等他们回到斯巴达的时候才发现,雅典人趁他们不在偷袭了城邦,并抓走了他们的爱人.侥幸逃出来的几个人说,她们被关押在一个迷宫的牢 ...

  2. bfs迷宫寻路问题(一看就懂的讲解)

    bfs迷宫问题讲解 广度优先搜索解决迷宫寻路问题 一.问题概述 二.问题分析 (一).手动模拟 (二).如何用计算机来解决 (1).地图表示 (2).如何找通路 (3).==如何找最短路(难点)== ...

  3. CF_329_B----AcWing_3825_逃离大森林(BFS究极模板)

    原题链接:https://www.acwing.com/problem/content/3828/ 你是一个宝可梦饲养员,你正在进行你的冒险之旅. 当前,你的目标是逃离飞鸟森林. 飞鸟森林可以表示为一 ...

  4. BFS【古希腊之争(二)】

    题目描述 话说,年轻的斯巴达勇士们终于走出迷宫,取得胜利并顺利赶了回来.可是等他们回到斯巴达的时候才发现,雅典人趁他们不在偷袭了城邦,并抓走了他们的爱人.侥幸逃出来的几个人说,她们被关押在一个迷宫的牢 ...

  5. BFS迷宫问题模型(具体模拟过程见《啊哈算法》)

    题目描述与DFS模型走迷宫那篇一样.小哈被困在迷宫里,小哼解救小哈. 这里用BFS来写.BFS(广搜)与DFS(深搜)的区别就在于,DFS是"不撞南墙不回头",一条路走到不能再走之 ...

  6. java bfs 迷宫例子_51-迷宫(一)- java版dfs和bfs

    一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道. 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路. 输入格式 第一行输入两个整数 nn ...

  7. 【算法设计与分析】HDU-1108 C++诡异的楼梯(BFS迷宫最短路径)

    一.题目描述 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,他们每隔一分钟就变动一次方向. 比如下面的例子里 ...

  8. 蓝桥杯 BFS 迷宫寻宝

    问题描述 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口.一些墙壁以及一个宝藏.由于迷宫是四连通的,即在迷宫中的一个位置,只能走到 ...

  9. [AcWing算法刷题]之DFS+BFS迷宫模板(简单)

    题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围​ 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...

最新文章

  1. php时间戳与日期互转
  2. Eclipse 中 SDK无法更新---解决方法
  3. wpa_supplicant与kernel的接口
  4. “隐忍”多年的“水果大王”百果园要寻求资本协助了?
  5. commons-lang3工具类学习(一)
  6. 解决 iframe 后退不是主页面后退(浏览器 history)问题
  7. HDU 2065 红色病毒 指数型母函数+泰勒公式
  8. 帆软round函数不生效_第一卷深入了解Python内置函数,讲解内置函数都有什么作用...
  9. 用ssh反向隧道访问内网机器
  10. IEEE的论文哪里可以下载?
  11. ajax简易写法,AJAX的简洁写法
  12. 161张Menhera酱表情包 无水印汉化版
  13. DialogFragment自动弹出软键盘,消失时关闭软键盘
  14. Unity Visual Effect Graph 制作Fireworks烟花特效
  15. iOS 图片编辑——涂鸦——在图片上添加文字
  16. 程序员的九阳神功,学会逆天改命!
  17. 天猫爬虫--爬取天猫评论中的图片
  18. 基于angularjs的单页面实例_angularjs网站开发实例
  19. html中账号绑定怎么做,绑定账号.html
  20. 基于S-Function的Joystick Input

热门文章

  1. CVPR2021论文速览--LaPred: Lane-Aware Prediction of Multi-Modal Future Trajectories of Dynamic Agents
  2. 开悟的《楞严》;成佛的《法华》;
  3. jvm设置分配的内存越大越好吗
  4. 「Redis数据结构」字符串对象(String)
  5. centos7下配置tomcat环境变量
  6. 微信要做操作系统?一文为你把脉小程序未来十年
  7. 研究问题应出现在学术论文的什么地方?
  8. 云端系统设计第二周作业
  9. spark统计文件行数
  10. CA认证-https实现