uva 11624
#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的更多相关文章
- UVa 11624 Fire!(着火了!)
UVa 11624 - Fire!(着火了!) Time limit: 1.000 seconds Description - 题目描述 Joe works in a maze. Unfortunat ...
- UVA - 11624 Fire! bfs 地图与人一步一步先后搜/搜一次打表好了再搜一次
UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动.火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间. 题解:先考 ...
- BFS(两点搜索) UVA 11624 Fire!
题目传送门 /* BFS:首先对火搜索,求出火蔓延到某点的时间,再对J搜索,如果走到的地方火已经烧到了就不入队,直到走出边界. */ /******************************** ...
- UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题
很少用bfs进行最短路搜索,实际BFS有时候挺方便得,省去了建图以及复杂度也降低了O(N*M): UVA 11624 写的比较挫 #include <iostream> #include ...
- E - Fire! UVA - 11624(bfs + 记录火到达某个位置所需要的最小时间)
E - Fire! UVA - 11624 题目描述 乔在迷宫中工作.不幸的是,迷宫的一部分着火了,迷宫的主人没有制定火灾的逃跑计划.请帮助乔逃离迷宫.根据乔在迷宫中的位置以及迷宫的哪个方块着火,你必 ...
- UVa 11624,两次BFS
题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624. ...
- uva 11624(bfs)
11624 - Fire! Time limit: 1.000 seconds Joe works in a maze. Unfortunately, portions of the maze hav ...
- uva 11624 Fire!(搜索)
开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说.电视剧有意思多了 bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的 发现vis[][]是多余的,完全可以用 ...
- UVA 11624 Fire! bfs 难度:0
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 11624 Fire!(两次BFS+记录最小着火时间)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
随机推荐
- jQuery - 广告图片轮播切换
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- B1821 [JSOI2010]Group 部落划分 Group 二分答案&&并查集
这个题正解是最小生成树,但是...最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了. 题干: Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒 ...
- Java常用类及反射,类加载
1.系统相关类 Java提供了System类和Runtime类来与程序运行的平台进行交互 A.System类代表当前Java程序的运行平台 a. System类是一个final类,该类的所有属性和方法 ...
- OC常用的数学函数及宏定义
一.函数 1. 三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 .反三角函数 double as ...
- python对XML 操作
一.XML的读取. 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容.在缺省情况下都是用XML格式保存的.下面我讲述一下,如何使用minidom来读取和保存XML文件. 下面 ...
- BZOJ 1511 KMP
题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组 建出next树 找到不为0的最小的 n减去它就是答案 //By SiriusRen #include <cstd ...
- Android开发笔记(11)——DialogFragment & 点击监听
转载请注明:http://www.cnblogs.com/igoslly/p/6931519.html DialogFragment使用 & 点击监听 /* DialogFragment是用于 ...
- YOLO训练Pedestrain
Pedestrain dl 使用darknet训练: 1. Inria 创建 yolo-inria.cfg 从cfg/yolo-voc.2.0.cfg拷贝一份,修改batch=64, subdivi ...
- SQL中EXTRACT() 函数
EXTRACT()("提取"的意思) 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 就是返回出来具体的年,月,日 2008-12-29 16:25:46.63 ...
- easyui combobox的增加全选解决方案
1.解决方案背景: 项目中偶然需要用到easyui的combobox的组件,但是本组件自己没有包含全选的api事件.搜索了一些解决方案,但是不是很符合,后来发现是因为所使用的版本不一致所导致的.项 ...