J - Fire!
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std; #define maxn 1005
const int oo = 0xfffffff; struct node{int x, y;};
node JoeSite, FireSite[maxn*maxn];//因为火可能不止一处,所以开一个数组保存所有的火焰的位置
char G[maxn][maxn];
int vJoe[maxn][maxn], vFire[maxn][maxn];
int dir[][] = { {,},{,-},{,},{-,} };
int M, N, nFire; void BfsFire()
{
node s, q;
queue<node> Q;
int i; for(i=; i<nFire; i++)
{
Q.push(FireSite[i]);
vFire[ FireSite[i].x ][ FireSite[i].y ] = ;
} while(Q.size())
{
s = Q.front();Q.pop(); for(i=; i<; i++)
{
q = s;
q.x += dir[i][];
q.y += dir[i][]; if(q.x>=&&q.x<M && q.y>=&&q.y<N && G[q.x][q.y]!='#' && vFire[q.x][q.y]==oo)
{
vFire[q.x][q.y] = vFire[s.x][s.y] + ;
Q.push(q);
}
}
}
} int IsBorder(int x, int y)//判断是否是边界并且是否比火焰先到达
{
if( (x== || x==M- || y== || y==N-) && vJoe[x][y] < vFire[x][y] )
return ;
return ;
} int BfsJoe()
{
queue<node> Q;
node s, q;
int i; vJoe[JoeSite.x][JoeSite.y] = ;
Q.push(JoeSite); while(Q.size())
{
s = Q.front();Q.pop(); if(IsBorder(s.x, s.y) == )
return vJoe[s.x][s.y]; for(i=; i<; i++)
{
q = s;
q.x += dir[i][];
q.y += dir[i][]; if(q.x>=&&q.x<M && q.y>=&&q.y<N && G[q.x][q.y]!='#' && vJoe[q.x][q.y]==)
{
vJoe[q.x][q.y] = vJoe[s.x][s.y] + ;
Q.push(q);
}
}
} return -;
} int main()
{
int T; scanf("%d", &T); while(T--)
{
int i, j, ans; scanf("%d%d", &M, &N); nFire = ; for(i=; i<M; i++)
{
scanf("%s", G[i]);
for(j=; j<N; j++)
{
vJoe[i][j] = ;
vFire[i][j] = oo; if(G[i][j] == 'J')
JoeSite.x = i, JoeSite.y = j;
if(G[i][j] == 'F')
{
FireSite[nFire].x = i;
FireSite[nFire++].y = j;
}
}
} BfsFire();
ans = BfsJoe(); if(ans == -)
printf("IMPOSSIBLE\n");
else
printf("%d\n", ans);
} return ;
}
J - Fire!的更多相关文章
- UVA - 11624 J - Fire! (BFS)
题目传送门 J - Fire! Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the ...
- J - Fire!---UVA 11624
题目链接 题意:J代表Joe的位置,F代表火的起点,下一刻火将会向四周扩散,求Joe逃离的最短时间,如果不能逃离输出IMPOSSIBLE; 注意火的起点可能不止一处 可以用两次bfs分别求出人到达某个 ...
- Fire逃生
Description: You are trapped in a building consisting of open spaces and walls. Some places are on f ...
- Fire! -两次dfs
题目描述: Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of ...
- Fire! 又是图 bfs
Joe works in a maze. Unfortunately, portions of the maze havecaught on re, and the owner of the ma ...
- UVA - 11624 Fire! 【BFS】
题意 有一个人 有一些火 人 在每一秒 可以向 上下左右的空地走 火每秒 也会向 上下左右的空地 蔓延 求 人能不能跑出来 如果能 求最小时间 思路 有一个 坑点 火是 可能有 多处 的 样例中 只有 ...
- 【UVA - 11624】Fire!
-->Fire! 直接上中文 Descriptions: 乔在迷宫中工作.不幸的是,迷宫的一部分着火了,迷宫的主人没有制定火灾的逃跑计划.请帮助乔逃离迷宫.根据乔在迷宫中的位置以及迷宫的哪个方块 ...
- kuangbin专题 专题一 简单搜索 Fire! UVA - 11624
题目链接:https://vjudge.net/problem/UVA-11624 题意:一个迷宫,可能有一个或者多个地方着火了,每过1个时间消耗,火会向四周蔓延,问Joe能不能逃出迷宫,只要走出迷宫 ...
- UVA11624Fire!(BFS)
题目链接 题意:帮助joe走出一个大火蔓延的迷宫,其中joe每分钟可往上下左右四个方向之一走,所有着火的格子都会蔓延(空格与着火格有公共边,下一分钟这个空格也会着火).迷宫中有一些障碍格,joe和火都 ...
随机推荐
- 最简单的基于FFmpeg的移动端例子:IOS 视频解码器-保存
===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...
- 不用Google Adsense的84个赚钱方法
这是一个关于网络广告商和网络销售的汇总列表,可以用来为您的网站或博客赚点钱.广告商都是英文的,加入广告请确认其是否支持中国地区支持,不支持的话就不必加入了. Chitika : 购物中心旗帜广告. ( ...
- Windows 8 / 8.1 禁用驱动签名最详细图文教程
Windows 8 鼠标右上角/右下角弹出边栏,选择“设置” 点击“更改电脑设置”: 选择“常规”,右侧拖到底,点击“高级启动”-“立即重启”: 稍后进入恢复页面,选择“疑难解答” 进入疑难解答后,选 ...
- 【BZOJ3673】【可持久化并查集】可持久化并查集 by zky
Description n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n ...
- 第二篇、Maven快速上手
1.目标 该篇主要是为了快速利用maven来构建工程,maven作为项目管理的工具已经得到极大程度的应用,很多开源项目都用maven来构建.如何建立 一个maven工程,如何导入别人的maven工程, ...
- [翻译]jQuery十周年-John Resig
10th Anniversary of jQuery Today marks the 10th anniversary of the release of jQuery...[原文] 今天是jQuer ...
- Android JSON 解析库的使用 - Gson 和 fast-json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- Instagram的技术架构
http://blogread.cn/it/article/5497 Instagram 被 Facebook 以10亿美金收购.团队规模:13 人.而在被Facebook收购前的一个月,整个团队才7 ...
- 在Hibernate中分别使用JDBC和JTA事务的方法
在Hibernate中使用JDBC事务 Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能.Hibernate将底层的JDBCTransaction或JTATransa ...
- 解决VS2010中产生的ipch文件夹和sdf文件
纯粹参考他人博文,转载时注明参考链接!!! 参考链接: http://blog.sina.com.cn/s/blog_707a4cbf0100r5jq.html 在VS2010开发的项目中,ipch文 ...