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

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. DatagramChannel

    DatagramChannel 最后一个socket通道是DatagramChannel.正如SocketChannel对应Socket,ServerSocketChannel对应ServerSock ...

  2. ExtJs3带条件的分页查询的实现

    使用ExtJs的同志们一定知道GridPanel哈~神器一般,非常方便的显示表格类型的数据,例如神马用户列表.产品列表.销售单列表.XXXX列表等.从数据库中查询所需的数据,以列表的形式显示出来,我们 ...

  3. POJ 1680 Fork() Makes Trouble

    原题链接:http://poj.org/problem?id=1680 对这道题,我只能说:我不知道题目是什么意思,但是AC还是没有问题的. 看来题目半天没明白fork()怎么个工作,但是看样例(根据 ...

  4. PE文件结构详解(五)延迟导入表

    PE文件结构详解(四)PE导入表讲 了一般的PE导入表,这次我们来看一下另外一种导入表:延迟导入(Delay Import).看名字就知道,这种导入机制导入其他DLL的时机比较“迟”,为什么要迟呢?因 ...

  5. hibernate 多对多

    HibernateHibernate多对多关联映射通常别拆分成两个多对一关联映射1. 下面的HostBean.UserBean.UserHostBean,UserHostBean是两个表之间的关联表, ...

  6. Asp.net MVC 自定义路由在IIS7以上,提示Page Not Found 解决方法

    受限确保自定义路由在开发服务器上Ok! 然后在web.config的<webserver>节点下增加如下配置就好了.   1: <system.webServer> 2: &l ...

  7. IOS 中的MVC设计模式

  8. POJ3267The Cow Lexicon

    http://poj.org/problem?id=3267 题意 : 给你一个message,是给定字符串,然后再给你字典,让你将message与字典中的单词进行匹配,输出要删掉多少字母. 思路 : ...

  9. hdu 1288 Hat's Tea

    这个要慢慢理解…… ;}

  10. hdu1875

    http://acm.hdu.edu.cn/showproblem.php?pid=1875 2 2 10 10 20 20 3 1 1 2 2 1000 1000 给定坐标 //最小生成树 #inc ...