星际旅行
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 113(45 users) Total Accepted: 56(42 users) Rating: Special Judge: No
Description

小z在星际旅行中,他想从当前起始点到达目的地,他可以上下左右的移动,并且每移动一格需要花费一单位时间,

星际中有许多危险的地方不可以走,还有许多的黑洞,你可以不花费任何时间从一个黑洞瞬间到达其它任何一个黑洞,

请你帮助小z计算从当前起始点到目的地最少需要多少单位时间。

Input

第一行是一个整数T,代表T组测试数据。

对于每组测试数据,首先是两个整数n,m代表星际地图(1<=n<=100, 1<=m<=100)

接下来是一个n*m的地图。

'O' 代表黑洞。

'#' 代表不可以走的地方。

'.' 代表普通的空间。

'S' 代表起始点,有且只有一个。

'E' 代表目的地,有且只有一个。

Output

对于每组测试数据,如果小z可以到达目的地,则输出需要的最少时间,否则输出"impossible"。

Sample Input

2

3 4

SO..

....

..OE

3 3

#S#

###

E##

Sample Output

2

impossible

思路简单,存下所有传送门位置,bfs扫到传送门后将所有传送门VIS记录为1,继续搜索;

#include<bits/stdc++.h>
using namespace std;
char maps[102][102];
int black_hole[102 * 102][102];
int vis[102][102];
int n, m, x, y, num;
int Step[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
struct node
{int xx, yy, step;
} op, uv;
void bfs(int x, int y)
{memset(vis, 0, sizeof vis);queue<node>q;op.xx = x;op.yy = y;op.step = 0;q.push(op);vis[x][y] = 1;while(!q.empty()){op = q.front();if(maps[op.xx][op.yy] == 'E'){printf("%d\n",op.step);return;}q.pop();for(int i = 0; i < 4; i++){uv.xx = op.xx + Step[i][0];uv.yy = op.yy + Step[i][1];if(uv.xx >=0 && uv.yy >= 0 && uv.xx < n && uv.yy < m && !vis[uv.xx][uv.yy] && maps[uv.xx][uv.yy] != '#'){if(maps[uv.xx][uv.yy] == '.' || maps[uv.xx][uv.yy] == 'E'){vis[uv.xx][uv.yy] = 1;uv.step = op.step + 1;q.push(uv);}if(maps[uv.xx][uv.yy] == 'O'){vis[uv.xx][uv.yy] = 1;for(int j = 0; j < num; j++){if(!vis[black_hole[j][0]][black_hole[j][1]]){uv.step = op.step + 1;uv.xx = black_hole[j][0];uv.yy = black_hole[j][1];vis[black_hole[j][0]][black_hole[j][1]] = 1;q.push(uv);}}}}}}printf("impossible\n");return;
}
int main()
{int N;scanf("%d", &N);while(N--){memset(black_hole, 0, sizeof black_hole);scanf("%d%d", &n, &m);for(int i = 0; i < n; i ++)scanf("%s", maps[i]);num = 0;for(int i = 0; i < n; i ++){for(int j = 0; j < m; j ++){if(maps[i][j] == 'O'){black_hole[num][0] = i;black_hole[num][1] = j;num ++;}if(maps[i][j] == 'S'){x = i;y = j;}}}bfs(x, y);}
}

hrbust 2188 星际旅行相关推荐

  1. bfs hrbust 2188

    星际旅行 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 112(44 users) Total Accepted: 55(41 use ...

  2. NOIP模拟测试5「星际旅行·砍树·超级树」

    星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子 ...

  3. 【UVA - 10891 Game of Sum 】【HRBUST - 1622】 Alice and Bob (区间dp,博弈问题)

    题干: 有一个长度为N的整数序列,Alice和Bob轮流取数,Alice先取.每次玩家只能从左端或者右端 取一个或多个数,但不能两端都取.所有数都被取走后游戏结束,然后统计每个人取走的所有数之和, 作 ...

  4. 博弈——巴什博弈(hdu1846,2188,2897)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1846 http://acm.hdu.edu.cn/showproblem.php?pid=2188 ...

  5. hdu 2188巴什博弈

    http://acm.hdu.edu.cn/showproblem.php?pid=2188 分析:巴什博弈. View Code // I'm lanjiangzhou //C #include & ...

  6. CCF202009-4 星际旅行(100分题解链接)

    试题编号: 202009-4 试题名称: 星际旅行 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一个n维欧几里得空间的宇宙中,小 A 打算完成一次星际旅行. 利用n维直角 ...

  7. CCF202012-5 星际旅行【线段树】(100分题解链接)

    试题编号: 202012-5 试题名称: 星际旅行 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 题目描述 乔帝要规划一次星际旅行,星际空间可以视为一个3维坐标系,乔帝有n(n≤1,0 ...

  8. hrbust 1611 最强兵力【二维费用完全背包+分类处理】

    最强兵力 Time Limit: 2000 MS Memory Limit: 65535 K Total Submit: 33(17 users) Total Accepted: 18(16 user ...

  9. 我们目前能想到的搞定星际旅行的办法

    作为一个码农,自诩为星际码农,当然要关心下如何实现我的星际种码植虫之事业.一路来都在努力的学习各种数学物理知识,了解最前沿的物理学科,也喜欢看这方面的科普.当然,现在也在努力赚钱,希望有朝一日可以马斯 ...

最新文章

  1. js实现审批流_超实用的工作流,小白用户也能轻松驾驭
  2. 帆软日期格式转换_时间转换为年月日
  3. c 和java互相验签_C椭圆曲线签名 用java验签
  4. 二叉搜索时与双向链表python_剑指Offer(二十六) 二叉搜索树和双向链表
  5. 面向对象淡入淡出轮播图(附带面向过程)
  6. 凑零钱动态规划java_动态规划巧解凑零钱问题 | 创作者训练营
  7. 分区助手服务器,分区助手专业版
  8. 一种标准地图服务转矢量Shapefile方法
  9. win10硬盘速度测试软件,最好的硬盘检测工具
  10. Linux命令对应的英文及整体学习法
  11. android 自定义控件之AutoCompleteTextView邮箱后缀自动补全
  12. 3DMAX解析愤怒的小鸟
  13. 在Photoshop中设计Web 2.0标签/徽章
  14. Apache安装和配置详细
  15. 【业务架构】价值链分析的直接指南
  16. 《信息学奥赛一本通》提高版题单
  17. Java 计算任意两天之间相隔的天数
  18. jQurey回车登陆
  19. ntp服务及时间同步问题
  20. window.print()打印时设置背景色

热门文章

  1. Java: 两个虚数的加减法
  2. 直播带货源码,Android中直播视频技术探究
  3. JavaWeb-简易留言板制作【MVC】
  4. 统信UOS系统无法卸载软件怎么办
  5. 外接拓展屏显示input not supported
  6. 2020年河南高考--各高校在河南录取分数线预测(本科二批——理科):
  7. 怎么运用好ZBrush中Magnify膨胀笔刷
  8. Windows10 电脑上配置 Docker 环境
  9. 深度学习在美团点评的应用
  10. bayes什么意思_Bayes是什么意思