博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fire!
阅读量:5221 次
发布时间:2019-06-14

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

Fire!

 

#include
#include
#include
#include
using namespace std;struct Node { int kind; int x, y; int step = 0;};int step;int n, m;int dir[4][2] = { 1,0,-1,0,0,1,0,-1 };queue
q;char mmp[1005][1005];void bfs() { //初始化的时候就把fire节点和people节点push进去了 //记得最后再把人push进去 while (!q.empty()) { Node temp = q.front(); q.pop(); if (temp.kind == 1) { //火节点 for (int i = 0; i<4; i++) { Node t; t.x = temp.x + dir[i][0]; t.y = temp.y + dir[i][1]; if (t.x >= 0 && t.x
= 0 && t.y
= 0 && t.x
= 0 && t.y
> t; while (t--) { cin >> n >> m; step = -1; while (!q.empty())q.pop(); Node people; for (int i = 0; i
> mmp[i][j]; if (mmp[i][j] == 'F') { Node temp; temp.x = i; temp.y = j; temp.kind = 1; temp.step = 0; q.push(temp); } else if (mmp[i][j] == 'J') { mmp[i][j] = 'C'; people.x = i; people.y = j; people.step = 0; people.kind = 2; } } } q.push(people); bfs(); if (step == -1) { cout << "IMPOSSIBLE\n"; } else { cout << step+1 << endl; } } return 0;}

 

Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire escape plan. Help Joe escape the maze. Given Joe’s location in the maze and which squares of the maze are on fire, you must determine whether Joe can exit the maze before the fire reaches him, and how fast he can do it. Joe and the fire each move one square per minute, vertically or horizontally (not diagonally). The fire spreads all four directions from each square that is on fire. Joe may exit the maze from any square that borders the edge of the maze. Neither Joe nor the fire may enter a square that is occupied by a wall. Input The first line of input contains a single integer, the number of test cases to follow. The first line of each test case contains the two integers R and C, separated by spaces, with 1 ≤ R, C ≤ 1000. The following R lines of the test case each contain one row of the maze. Each of these lines contains exactly C characters, and each of these characters is one of: • #, a wall • ., a passable square • J, Joe’s initial position in the maze, which is a passable square • F, a square that is on fire There will be exactly one J in each test case. Output For each test case, output a single line containing ‘IMPOSSIBLE’ if Joe cannot exit the maze before the fire reaches him, or an integer giving the earliest time Joe can safely exit the maze, in minutes. Sample Input 2 4 4 #### #JF# #..# #..# 3 3 ### #J. #.F Sample Output 3 IMPOSSIBLE

转载于:https://www.cnblogs.com/CuteAbacus/p/9492186.html

你可能感兴趣的文章
[转]SQL中 OVER(PARTITION BY) 取上一条,下一条等
查看>>
前端开发就从认识浏览器开始 - 浏览器处理请求的过程
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
jmeter系列二(jmeter engine相关)
查看>>
前端页面设计问题小计
查看>>
一份超全超详细的 ADB 用法大全
查看>>
Spring定时任务(@Scheduled)
查看>>
WebView 调试
查看>>
IB使用
查看>>
Linux硬链接和软链接(符号链接)
查看>>
git stash
查看>>
Apache Common-IO 使用
查看>>
Java-第一课正则表达式
查看>>
深入剖析,什么是eval的直接调用.
查看>>
apidoc
查看>>
3月14日-15日学习总结
查看>>
关于 ++x 和 x++ 比较难的一个例子
查看>>
第三次作业 105032014021
查看>>
记录一些容易忘记的属性 -- UILabel
查看>>