牛客网 - [北京信息科技大学第十一届程序设计竞赛]kotori和迷宫(BFS)
发布日期:2021-07-01 00:18:55
浏览次数:2
分类:技术文章
本文共 1669 字,大约阅读时间需要 5 分钟。
题目链接:
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld题目描述
kotori在一个n*m迷宫里,迷宫的最外层被岩浆淹没,无法涉足,迷宫内有k个出口。kotori只能上下左右四个方向移动。她想知道有多少出口是她能到达的,最近的出口离她有多远?
输入描述
第一行为两个整数n和m,代表迷宫的行和列数 (1≤n,m≤30)
后面紧跟着n行长度为m的字符串来描述迷宫。'k'代表kotori开始的位置,'.'代表道路,'*'代表墙壁,'e'代表出口。保证输入合法。输出描述
若有出口可以抵达,则输出2个整数,第一个代表kotori可选择的出口的数量,第二个代表kotori到最近的出口的步数。(注意,kotori到达出口一定会离开迷宫)
若没有出口可以抵达,则输出-1。输入
6 8
e.*.*e.* .**.*.*e ..*k**.. ***.*.e* .**.*.** *......e
输出
2 7
说明
可供选择坐标为[4,7]和[6,8],到kotori的距离分别是8和7步。
解题思路
题意:问能到达的出口数量和最近的出口距离。
思路:BFS。Accepted Code:
#includeusing namespace std;const int inf = 0x3f3f3f3f;struct edge { int x, y, t;}p;char mp[35][35];int n, m, cnt = 0, min_ = inf, vis[35][35];int arr[4][2] = { {1, 0}, {0, 1}, {0, -1}, {-1, 0}}; void BFS(int x, int y) { int tx, ty; queue Q; Q.push((edge){x, y}); while (!Q.empty()) { p = Q.front(); Q.pop(); if (mp[p.x][p.y] == 'e') { cnt++; min_ = min(min_, p.t); continue; } for (int i = 0; i < 4; i++) { tx = p.x + arr[i][0]; ty = p.y + arr[i][1]; if (tx >= 0 && tx < n && ty >= 0 && ty < m && !vis[tx][ty] && mp[tx][ty] != '*'){ vis[tx][ty] = true; Q.push((edge){tx, ty, p.t + 1}); } } }}int main() { int ex, ey; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf(" %c", &mp[i][j]); if (mp[i][j] == 'k') ex = i, ey = j; } } BFS(ex, ey); if (min_ < inf) printf("%d %d\n", cnt, min_); else printf("-1\n"); return 0;}
转载地址:https://lzyws739307453.blog.csdn.net/article/details/94549974 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月16日 14时49分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于html5的video全屏作为背景的方法
2019-05-01
html5视频全屏背景插件(支持全屏背景,标签实现
2019-05-01
CSS3-多媒体查询
2019-05-01
设置可移动modal模态框
2019-05-01
去掉字符串首位逗号
2019-05-01
调整style中的样式
2019-05-01
如何将本地jar上传至私服
2019-05-01
nat模式和桥接模式使用方法
2019-05-01
nexus简介
2019-05-01
nexus私服搭建(default)
2019-05-01
remote automatically blocked and unavailable
2019-05-01
查看端口占用情况
2019-05-01
nginx(编译安装)-自定义nginx安装路径
2019-05-01
linux系统,启动、停止、重启crontab服务
2019-05-01
Linux下Nginx安装/启动/重启/停止
2019-05-01
Nginx URL重写(rewrite)配置及信息详解
2019-05-01
Nginx rewrite模块深入浅出详解
2019-05-01
mysql 数据库优化配置实例
2019-05-01