#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 1100
struct nodde {
int x,y;
}f[N],start;
int h,n,m,visitt[N][N];
int dis[4][2]={-1,0,1,0,0,1,0,-1};
char str[N][N];
struct node {
int x,y,time,f;
};
int judge(int x,int y) {
if(x>=1&&x<=n&&y>=1&&y<=m&&str[x][y]!='#'&&!visitt[x][y])
    return 1;
return 0;
}
void bfs() {
int i;
queue<node>q;
node cur,next;
memset(visitt,0,sizeof(visitt));
for(i=0;i<h;i++) {
    cur.x=f[i].x;
    cur.y=f[i].y;
    cur.time=0;
    cur.f=1;
    q.push(cur);
    visitt[cur.x][cur.y]=1;
}
cur.x=start.x;
cur.y=start.y;
cur.time=0;
cur.f=0;
q.push(cur);
while(!q.empty()) {
    cur=q.front();
      if((cur.x==1||cur.x==n||cur.y==1||cur.y==m)&&cur.f==0) {//有可能起点就在边界上
            printf("%d\n",cur.time+1);
            return ;
        }
    q.pop();
    for(i=0;i<4;i++) {
        int xx=next.x=cur.x+dis[i][0];
        int yy=next.y=cur.y+dis[i][1];
        next.time=cur.time+1;
        next.f=cur.f;
        if(judge(xx,yy)) {
        visitt[xx][yy]=1;
            q.push(next);
        }
    }
}
printf("IMPOSSIBLE\n");
return ;
}
int main() {
    int i,j,t;
    scanf("%d",&t);
    while(t--) {
     scanf("%d%d",&n,&m);
     for(i=1;i<=n;i++)
        scanf("%s",str[i]+1);
        h=0;
     for(i=1;i<=n;i++)
     for(j=1;j<=m;j++) {
        if(str[i][j]=='J')
            start.x=i,start.y=j;
        if(str[i][j]=='F') {
            f[h].x=i;
            f[h++].y=j;
        }
     }
    bfs();
    }
return 0;
}

uva 11624的更多相关文章

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

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

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

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

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

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

  4. UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题

    很少用bfs进行最短路搜索,实际BFS有时候挺方便得,省去了建图以及复杂度也降低了O(N*M): UVA 11624 写的比较挫 #include <iostream> #include ...

  5. E - Fire! UVA - 11624(bfs + 记录火到达某个位置所需要的最小时间)

    E - Fire! UVA - 11624 题目描述 乔在迷宫中工作.不幸的是,迷宫的一部分着火了,迷宫的主人没有制定火灾的逃跑计划.请帮助乔逃离迷宫.根据乔在迷宫中的位置以及迷宫的哪个方块着火,你必 ...

  6. UVa 11624,两次BFS

    题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624. ...

  7. uva 11624(bfs)

    11624 - Fire! Time limit: 1.000 seconds Joe works in a maze. Unfortunately, portions of the maze hav ...

  8. uva 11624 Fire!(搜索)

    开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说.电视剧有意思多了 bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的 发现vis[][]是多余的,完全可以用 ...

  9. UVA 11624 Fire! bfs 难度:0

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  10. UVA 11624 Fire!(两次BFS+记录最小着火时间)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

随机推荐

  1. jQuery - 广告图片轮播切换

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. B1821 [JSOI2010]Group 部落划分 Group 二分答案&&并查集

    这个题正解是最小生成树,但是...最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了. 题干: Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒 ...

  3. Java常用类及反射,类加载

    1.系统相关类 Java提供了System类和Runtime类来与程序运行的平台进行交互 A.System类代表当前Java程序的运行平台 a. System类是一个final类,该类的所有属性和方法 ...

  4. OC常用的数学函数及宏定义

    一.函数 1. 三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 .反三角函数 double as ...

  5. python对XML 操作

    一.XML的读取. 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容.在缺省情况下都是用XML格式保存的.下面我讲述一下,如何使用minidom来读取和保存XML文件. 下面 ...

  6. BZOJ 1511 KMP

    题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组  建出next树 找到不为0的最小的 n减去它就是答案 //By SiriusRen #include <cstd ...

  7. Android开发笔记(11)——DialogFragment & 点击监听

    转载请注明:http://www.cnblogs.com/igoslly/p/6931519.html DialogFragment使用 & 点击监听 /* DialogFragment是用于 ...

  8. YOLO训练Pedestrain

    Pedestrain dl  使用darknet训练: 1. Inria 创建 yolo-inria.cfg 从cfg/yolo-voc.2.0.cfg拷贝一份,修改batch=64, subdivi ...

  9. SQL中EXTRACT() 函数

    EXTRACT()("提取"的意思) 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 就是返回出来具体的年,月,日 2008-12-29 16:25:46.63 ...

  10. easyui combobox的增加全选解决方案

      1.解决方案背景: 项目中偶然需要用到easyui的combobox的组件,但是本组件自己没有包含全选的api事件.搜索了一些解决方案,但是不是很符合,后来发现是因为所使用的版本不一致所导致的.项 ...