博客
关于我
AcWing-1101.献给阿尔吉侬的花束。
阅读量:133 次
发布时间:2019-02-27

本文共 1321 字,大约阅读时间需要 4 分钟。

阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。

今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。

现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。

迷宫用一个 R×C 的字符矩阵来表示。

字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。

阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。

输入格式
第一行是一个正整数 T,表示一共有 T 组数据。

每一组数据的第一行包含了两个用空格分开的正整数 R 和 C,表示地图是一个 R×C 的矩阵。

接下来的 R 行描述了地图的具体内容,每一行包含了 C 个字符。字符含义如题目描述中所述。保证有且仅有一个

输出格式
对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。

若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。

每组数据的输出结果占一行。

数据范围
1<T≤10 ,
2≤R,C≤200
输入样例:
3
3 4
.S…
###.
…E.
3 4
.S…
.E…
3 4
.S…

…E.

输出样例:

5
1
oop!

BFS

#include
using namespace std;int n,m,sx,sy,ex,ey;int dx[]={ 0,1,0,-1},dy[]={ 1,0,-1,0};struct node{ int x; int y; int step;};const int N=250;char a[N][N];bool vis[N][N];node p,xx;int bfs(){ queue
q; q.push(p); vis[p.x][p.y]=1; while(!q.empty()) { xx=q.front(); q.pop(); if(xx.x==ex&&xx.y==ey) return xx.step; for(int i=0;i<4;i++) { int xx1=xx.x+dx[i]; int yy1=xx.y+dy[i]; if(xx1>=0&&xx1
=0&&yy1
>t; while(t--) { memset(vis,false,sizeof(vis)); cin>>n>>m; for(int i=0;i
>a[i][j]; if(a[i][j]=='S') { sx=i; sy=j; } else if(a[i][j]=='E') { ex=i; ey=j; } } } p.x=sx; p.y=sy; p.step=0; int h=bfs(); if(h!=-1) cout<
<

转载地址:http://dumb.baihongyu.com/

你可能感兴趣的文章
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>
mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
查看>>
mysql中的undo log、redo log 、binlog大致概要
查看>>
Mysql中的using
查看>>
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>
mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
查看>>
mysql中的字段如何选择合适的数据类型呢?
查看>>
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>