UVA 11264 Fire!
来源:互联网 发布:餐饮英语口语大全软件 编辑:程序博客网 时间:2024/04/29 02:56
第一次bfs把火到各点燃烧的最短时间计算出并存储
第二次bfsXX如果走到该点的时间大于等于火烧到这点所用的时间 那么不入队(XX必然被烧死
不过第一次写只用了一次bfs 把火和人同时入队 难道是造成混乱? 反正无限WA
坑点是一开始人就站在了边界处 输出1
#include<iostream>
#include<cstdio>#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
int ftime[1005][1005];
int vis[1005][1005];
char Map[1005][1005];
int R,C;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int x,y;
int step;
};
queue<node> que;
int st_x,st_y;
void bfs1()
{
memset(ftime,INF,sizeof(ftime));
node st,en;
while(!que.empty()){
st=que.front();
que.pop();
for(int i=0;i<4;i++){
en.x=st.x+dir[i][0];
en.y=st.y+dir[i][1];
en.step=st.step+1;
if(en.x<0||en.x>=R||en.y<0||en.y>=C||Map[en.x][en.y]=='#')
continue;
if(en.step<ftime[en.x][en.y]){
ftime[en.x][en.y]=en.step;
que.push(en);
}
}
}
}
int bfs2()
{
while(!que.empty())que.pop();
memset(vis,0,sizeof(vis));
node st,en;
st.x=st_x;
st.y=st_y;
st.step=0;
que.push(st);
while(!que.empty()){
st=que.front();
que.pop();
for(int i=0;i<4;i++){
en.x=st.x+dir[i][0];
en.y=st.y+dir[i][1];
en.step=st.step+1;
if(en.step>=ftime[en.x][en.y]||Map[en.x][en.y]=='#'||vis[en.x][en.y]==1)
continue;
if(en.x==0||en.x==R-1||en.y==0||en.y==C-1){
printf("%d\n",en.step+1);
return 1;
}
vis[en.x][en.y]=1;
que.push(en);
}
}
return 0;
}
int main()
{
int cases;
//freopen("in.txt","r",stdin);
scanf("%d",&cases);
while(cases--){
que.pop();
scanf("%d%d",&R,&C);
getchar();
node nd;
for(int i=0;i<R;i++){
for(int j=0;j<C;j++){
scanf("%c",&Map[i][j]);
if(Map[i][j]=='F'){
nd.x=i;
nd.y=j;
nd.step=0;
ftime[i][j]=0;
que.push(nd);
}
else if(Map[i][j]=='J'){
st_x=i;
st_y=j;
}
}
getchar();
}
if(st_x==0||st_x==R-1||st_y==0||st_y==C-1){
printf("1\n");
continue;
}
bfs1();
if(!bfs2())
printf("IMPOSSIBLE\n");
}
return 0;
}
0 0
- UVA 11264 Fire!
- uva Fire!
- uva Fire!
- Uva Fire!
- Fire! UVA
- Fire! UVA
- Fire!( UVA
- Fire UVA
- UVa 11624 - Fire!
- UVA 11624 - Fire!
- Uva-11624-Fire!
- uva 11624 Fire!
- uva 11624 - Fire!
- UVa 11624 - Fire!
- UVa 11624 Fire!
- UVA 11624 BFS Fire
- UVa Fire! 11624 (BFS)
- UVA - 11624 Fire!
- 动词的种类
- 黑客帝国屏保源码
- C# Assembly
- opencv的cvCvtColor问题
- 初级算法整理,选择排序法
- UVA 11264 Fire!
- Scrapy入门
- activity 的onrestart() 方法总会被调用么
- Map用来当做容器时,重复赋值,会将以前的值给覆盖掉。
- cocos2d-x 3.6版连连看
- codeevs 1069关押罪犯,关系并查集
- 在处理多线程引起的共享数据冲突问题上,非常规解决办法两种:
- IDL视频教程
- 如何评价 IBM 收购 Blue Box 集团