开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说、电视剧有意思多了

bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的

发现vis[][]是多余的,完全可以用num[][]代替了,不过不提交了。。。

uva的submission error跳得我蛋疼,可是介于管理员Carlos及时回复了,还是理解人家吧

 #include<cstdio>
#include<cstring> const int MAXN=; struct P{
int x,y;
int c;
}; P que[MAXN*MAXN];
char mp[MAXN][MAXN];
int num[MAXN][MAXN],vis[MAXN][MAXN]; int dir[][]={,,-,,,,,-};
int n,m,flog;
int xi[MAXN],yi[MAXN]; void bfs(int l,int r)
{
while(l<r)
{
int x=que[l].x;
int y=que[l].y;
int c=que[l++].c;
num[x][y]=c;
for(int i=;i<;i++)
{
int dx=x+dir[i][];
int dy=y+dir[i][]; if(dx<||dy<||dx>=n||dy>=m){
if(!flog){
flog=;
que[].c=c;
}
continue;
}
if(!vis[dx][dy]&&mp[dx][dy]!='#'&&(num[dx][dy]>c+||num[dx][dy]==-)){
vis[dx][dy]=;
que[r].x=dx;
que[r].y=dy;
que[r++].c=c+;
}
}
}
} int main()
{
int T,x,y;
int i,j,k;
int l,r; scanf("%d",&T);
while(T--)
{
int tot=;
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
{
getchar();
for(j=;j<m;j++)
{
scanf("%c",&mp[i][j]);
if(mp[i][j]=='J'){
x=i;
y=j;
}
if(mp[i][j]=='F'){
xi[tot]=i;
yi[tot++]=j;
}
}
} memset(num,-,sizeof(num));
memset(vis,,sizeof(vis));
for(i=;i<tot;i++)
{
vis[xi[i]][yi[i]]=;
que[i].x=xi[i];
que[i].y=yi[i];
que[i].c=;
}
bfs(,tot); memset(vis,,sizeof(vis));
flog=;
que[].x=x;
que[].y=y;
que[].c=;
bfs(,); if(flog){
printf("%d\n",que[].c);
}else {
printf("IMPOSSIBLE\n");
}
}
return ;
}
/*
8 8
........
..F...F.
....J...
...F....
......F.
........
........
........ 5 5
.....
.###.
.#J#.
.###.
..... 5 5
.....
.#F#.
.FJF.
.#F#.
..... 5 5
....F
.#.#.
..J..
.#.#.
F.... 5 5
....F
.#.#.
..J..
.#.#.
.....
*/

uva 11624 Fire!(搜索)的更多相关文章

  1. BFS(两点搜索) UVA 11624 Fire!

    题目传送门 /* BFS:首先对火搜索,求出火蔓延到某点的时间,再对J搜索,如果走到的地方火已经烧到了就不入队,直到走出边界. */ /******************************** ...

  2. UVa 11624 Fire!(着火了!)

    UVa 11624 - Fire!(着火了!) Time limit: 1.000 seconds Description - 题目描述 Joe works in a maze. Unfortunat ...

  3. UVA - 11624 Fire! bfs 地图与人一步一步先后搜/搜一次打表好了再搜一次

    UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动.火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间. 题解:先考 ...

  4. UVA 11624 Fire!(广度优先搜索)

    题目大意:在一个N*M的迷宫内,J代表某人(只有一个),F代表火(可能不只一个),#代表墙,火每分钟会向四周除了墙以外的地方扩散一层,问人能否在没被火烧到 之前逃出迷宫,若能逃出输出最短时间.很明显的 ...

  5. UVA 11624 Fire! BFS搜索

    题意:就是问你能不能在火烧到你之前,走出一个矩形区域,如果有,求出最短的时间 分析:两遍BFS,然后比较边界 #include<cstdio> #include<algorithm& ...

  6. UVA 11624 Fire!【两点BFS】

    Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the m ...

  7. UVA 11624 - Fire! 图BFS

    看题传送门 昨天晚上UVA上不去今天晚上才上得去,这是在维护么? 然后去看了JAVA,感觉还不错昂~ 晚上上去UVA后经常连接失败作死啊. 第一次做图的题~ 基本是照着抄的T T 不过搞懂了图的BFS ...

  8. UVa 11624 Fire!(BFS)

    Fire! Time Limit: 5000MS   Memory Limit: 262144KB   64bit IO Format: %lld & %llu Description Joe ...

  9. UVA 11624 Fire! (bfs)

    算法指南白书 分别求一次人和火到达各个点的最短时间 #include<cstdio> #include<cstring> #include<queue> #incl ...

随机推荐

  1. win7安装mysql

    转:http://blog.csdn.net/longyuhome/article/details/7913375 Win7系统安装MySQL5.5.21图解 大家都知道MySQL是一款中.小型关系型 ...

  2. 使用JAVA反射初始化数组(转)

    在做JSON解析时,遇到了在不知道数组类型的前期下,需要转化为具体类型数组的问题.可以使用JAVA的反射来做. JSONArray jsonArray = (JSONArray) entry.getV ...

  3. WPF Loader

    xaml <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml ...

  4. A const field of a reference type other than string can only be initialized with null Error [duplicate]

    I'm trying to create a 2D array to store some values that don't change like this. const int[,] hiveI ...

  5. synergy--共享你的键鼠

    synergy用来分享一套键鼠,作用于多台主机.可作用于linux.Windows和mac平台.工作方式是:将一台主机作为服务器端,然后服务器端将会分享自己的键鼠,另一台主机作为客户端连接服务端就可以 ...

  6. node.js 安装、图文详解

    网上的教程很多,有些模糊不清,有些版本太旧,有些是.exe安装,本文讲述windows系统下简单nodejs .msi环境配置.最新版是Current version: v0.10.26.官网下载地址 ...

  7. Intent (一)

    1,简介 Intent 是一种消息传递机制,可以理解为一种对消息的封装,执行某操作的抽象描述,可用于应用程序内部及应用程序之间 其组成包括: 要执行的动作(action) 如VIEW_ACTION(查 ...

  8. HDU 3507 Print Article(斜率优化DP)

    题目链接 题意 : 一篇文章有n个单词,如果每行打印k个单词,那这行的花费是,问你怎么安排能够得到最小花费,输出最小花费. 思路 : 一开始想的简单了以为是背包,后来才知道是斜率优化DP,然后看了网上 ...

  9. android 上下文菜单详解

    本文使用xml来创建上下文菜单 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:andr ...

  10. hdu1102

    http://acm.hdu.edu.cn/showproblem.php?pid=1102 最小生成树(模板题) 3 0 990 692 990 0 179 692 179 0 1 1 2 一共3个 ...