uva 11624 Fire!(搜索)
开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说、电视剧有意思多了
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!(搜索)的更多相关文章
- BFS(两点搜索) UVA 11624 Fire!
题目传送门 /* BFS:首先对火搜索,求出火蔓延到某点的时间,再对J搜索,如果走到的地方火已经烧到了就不入队,直到走出边界. */ /******************************** ...
- 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能否逃出迷宫,若能输出最小时间. 题解:先考 ...
- UVA 11624 Fire!(广度优先搜索)
题目大意:在一个N*M的迷宫内,J代表某人(只有一个),F代表火(可能不只一个),#代表墙,火每分钟会向四周除了墙以外的地方扩散一层,问人能否在没被火烧到 之前逃出迷宫,若能逃出输出最短时间.很明显的 ...
- UVA 11624 Fire! BFS搜索
题意:就是问你能不能在火烧到你之前,走出一个矩形区域,如果有,求出最短的时间 分析:两遍BFS,然后比较边界 #include<cstdio> #include<algorithm& ...
- UVA 11624 Fire!【两点BFS】
Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the m ...
- UVA 11624 - Fire! 图BFS
看题传送门 昨天晚上UVA上不去今天晚上才上得去,这是在维护么? 然后去看了JAVA,感觉还不错昂~ 晚上上去UVA后经常连接失败作死啊. 第一次做图的题~ 基本是照着抄的T T 不过搞懂了图的BFS ...
- UVa 11624 Fire!(BFS)
Fire! Time Limit: 5000MS Memory Limit: 262144KB 64bit IO Format: %lld & %llu Description Joe ...
- UVA 11624 Fire! (bfs)
算法指南白书 分别求一次人和火到达各个点的最短时间 #include<cstdio> #include<cstring> #include<queue> #incl ...
随机推荐
- 【转】欧拉回路&特殊图下的哈密顿回路题集
转自:http://blog.csdn.net/shahdza/article/details/7779385 欧拉回路[HDU]1878 欧拉回路 判断3018 Ant Trip 一笔画问题1116 ...
- [转载]Spring Bean Configuration Inheritance
转自: http://www.mkyong.com/spring/spring-bean-configuration-inheritance/ In Spring, the inheritance i ...
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
转自 http://tech-wonderland.net/blog/summary-of-ksum-problems.html 前言: 做过leetcode的人都知道, 里面有2sum, 3sum ...
- 2014多校第一场D题 || HDU 4864 Task (贪心)
题目链接 题意 : 用N台机器,M个任务,每台机器都有一个最大工作时间和等级,每个任务有一个需要工作时间和一个等级.如果机器完成一个任务要求是:机器的工作时间要大于等于任务的时间,机器的等级要大于等于 ...
- POJ1328Radar Installation
http://poj.org/problem?id=1328 题的大意就是说在海里有小岛,坐标位置会给出,需要岸边的雷达覆盖所有的小岛,但雷达的覆盖范围有限,所以,需要最少的雷达覆盖所有的小岛,但若是 ...
- OpenStack重启之后,dashboard登录不上去
ubuntu 12.04装好openstack之后,安装成功,终端打出如下信息: Horizon is now available at http://192.168.0.2/Keystone is ...
- fhq_treap 总结
今天跟着zcg大神学了一发fhq_treap 发现在维护区间问题上fhq_treap不仅思维量小,而且代码量更小 是Splay的不错的替代品,不过至今还是有一些问题不能很好的解决 譬如查询某个数在序列 ...
- lintcode :Count and Say 报数
题目: 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, 111221, ... 1 读作 "one 1" -> ...
- [SharePoint 2013 入门教程 2 ] 创建WEB应用程序,网站集,网站
SharePoint 2013 的 Hello World 由大到小 创建WEB应用程序(老母),网站集(儿子),网站(孙子) 直接确定,其余都默认 填入标题,选好模板.网站集 儿子就有了. 点击页 ...
- SpringMVC学习总结(三)——Controller接口详解(1)
4.12.ParameterizableViewController 参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图. <bean name=&quo ...