UVA - 11624 Fire!
题意:求Joe走出迷宫的最短时间,有障碍,还有向四周蔓延的火
思路:将火的位置也加进BFS里面
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int MAXN = 1200;struct node{int x,y,f,t;
};
int dx[] ={1,-1,0,0};
int dy[] ={0,0,1,-1};
int vis[MAXN][MAXN],n,m;
char map[MAXN][MAXN];int check(node a){if (a.x >= 0 && a.x < n && a.y >= 0 && a.y < m)return 1;return 0;
}int main(){int t;scanf("%d",&t);while (t--){scanf("%d%d",&n,&m);for (int i = 0; i < n; i++)scanf("%s",map[i]);queue<node> q;node Joe;memset(vis,0,sizeof(vis));for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (map[i][j] == '#')vis[i][j] = 1;else if (map[i][j] == 'F'){vis[i][j] = 1;q.push((node){i,j,1,0});}else if (map[i][j] == 'J'){vis[i][j] = 1;Joe.x = i,Joe.y = j;Joe.f = 0,Joe.t = 0;}}}q.push(Joe);int ans = -1;while (!q.empty()){node u,v;u = q.front(),q.pop();for (int i = 0; i < 4; i++){v = u;v.t++;v.x += dx[i],v.y += dy[i];if (check(v)){if (vis[v.x][v.y])continue;vis[v.x][v.y] = 1;q.push(v);}else if (v.f == 0){ans = v.t;break;}}if (ans != -1)break;}if (ans == -1)printf("IMPOSSIBLE\n");else printf("%d\n",ans);}return 0;
}
UVA - 11624 Fire!相关推荐
- 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】
POJ3126Prime Path 给定两个四位素数a b,要求把a变换到b 变换的过程要 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位 ...
- BFS(两点搜索) UVA 11624 Fire!
题目传送门 1 /* 2 BFS:首先对火搜索,求出火蔓延到某点的时间,再对J搜索,如果走到的地方火已经烧到了就不入队,直到走出边界. 3 */ 4 /************************ ...
- UVA - 11624 Fire! 两次BFS
UVA - 11624 Fire! Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and ...
- UVA - 11624 - Fire!
题目描述: 小明最后也没能进入游戏大厂,也没能娶到心爱的女孩,现在小明在一家迷宫里工作. 不幸的是,迷宫里因为线路老化而发生了火灾.小明现在需要一个逃跑路线,请你帮助倒霉的小明从迷宫中逃离出去吧 小明 ...
- Fire! UVA - 11624
题目链接:Fire! UVA - 11624 =================================================== Fire Time Limit: 1000MS D ...
- J - Fire! UVA - 11624
J - Fire! UVA - 11624 题意:火每次能烧到上下左右,人碰到非墙的边界则逃火成功,求最短的逃离时间. 由于bfs每个位置最多入队出队一次,所以复杂度为 1e6 一发bfs直接TLE, ...
- [kuangbin带你飞]专题1 简单搜索 J - Fire! UVA - 11624
题目: Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of t ...
- Fire uva 11624
题目连接:http://acm.hust.edu.cn/vjudge/problem/28833 /* 首先对整个图bfs一次得到火焰燃烧的时刻表 之后在bfs搜路径时加一个火烧表的判断 坑点在于:如 ...
- UVa 11624,两次BFS
题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624. ...
最新文章
- svn(subversion)代码版本管理在linux下的一些常见使用命令
- 关于SAP物料的历史库存
- [html] html如何启动本地的exe应用?
- python中goto如何使用,基于python goto的正确用法说明
- 工厂模式(描述语言PHP)
- django debug=false后静态文件丢失_Django DEBUG=False后DEBUG=True带来的问题
- verifycode验证码模版
- 配置React-Native开发工具——WebStorm下载、激活与配置
- 通达信与飞狐不同函数的替代
- python导入鸢尾花数据集_python可视化分析鸢尾花数据集
- 古体字与简体字对照表_简体字与繁体字对照表
- ps快捷键大全(表格汇总)
- python 获取各pkg版本_Python pkg_resources.get_distribution方法代碼示例
- u-boot2020.04移植(1、u-boot的编译)
- 运维派网站数据迁移过程踩到的坑和教训
- 坐落尘世的繁华,幽眉清黛任花开花谢
- 数据分析-Excel简介
- NR RLC Protocol General and Procedure
- Django及Flask漏洞合集
- 在mysql中删除数据后,添加数据,id值依然从删除的位置开始增加,问题详解。