uva 11624 Fire!(迷宫问题加 着火 两次bfs)
来源:互联网 发布:淘宝如何抢到现货 编辑:程序博客网 时间:2024/04/28 07:09
一开始忘记标记bfs2的vis数组 T了一次
bfs1 就是说 以着火点 bfs 标记一个数组 就是每个点着火的最小的时间
bfs2 就是看到达那个点的时候 时间是不是小于着火时间
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn=1001;const int inf=1<<30;char str[maxn];char map[maxn][maxn];int tim[maxn][maxn];bool vis[maxn][maxn];int n,m,xpos,ypos;int dir[4][2]={1,0,-1,0,0,1,0,-1};struct Node{ int x,y;};struct No{ int x,y,t;};void bfs1();void bfs2();int main(){ int T,i,j; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); memset(vis,0,sizeof(vis)); for(i=0;i<n;++i) { scanf("%s",str); for(j=0;j<m;++j) { map[i][j]=str[j]; if(map[i][j]=='F') tim[i][j]=0; else tim[i][j]=inf; if(map[i][j]=='J') { xpos=i; ypos=j; map[i][j]='.'; } } } bfs1(); bfs2(); } return 0;}void bfs1(){ int i,j; queue<Node> q; Node node,no; for(i=0;i<n;++i) { for(j=0;j<m;++j) { if(map[i][j]=='F') { no.x=i;no.y=j; q.push(no); } } } while(!q.empty()) { node=q.front(); q.pop(); for(i=0;i<4;++i) { no.x=node.x+dir[i][0]; no.y=node.y+dir[i][1]; if(map[no.x][no.y]=='.' && no.x>=0 && no.x<n && no.y>=0 && no.y<m && tim[node.x][node.y]+1<tim[no.x][no.y]) { q.push(no); tim[no.x][no.y]=tim[node.x][node.y]+1; } } }}void bfs2(){ No node,no; int i,j; node.x=xpos; node.y=ypos; node.t=0; queue<No> q; q.push(node); vis[node.x][node.y]=1; while(!q.empty()) { node=q.front(); q.pop(); if(node.x==0 || node.x==n-1 || node.y==0 || node.y==m-1) { printf("%d\n",node.t+1); return ; } for(i=0;i<4;++i) { no.x=node.x+dir[i][0]; no.y=node.y+dir[i][1]; no.t=node.t+1; if(!vis[no.x][no.y]&&no.x>=0 && no.x<n && no.y>=0 && no.y<m && no.t<tim[no.x][no.y] && map[no.x][no.y]=='.') { vis[no.x][no.y]=1; q.push(no); } } } puts("IMPOSSIBLE");}
- uva 11624 Fire!(迷宫问题加 着火 两次bfs)
- uva 11624 大火蔓延的迷宫 Fire!(两次bfs)
- UVA-11624 Fire!(两次BFS)
- UVA 11624 Fire! 两次BFS求解
- UVA 11624 Fire!(两次bfs)
- uva 11624 Fire!(bfs两次)
- UVA 11624 Fire!(两次BFS、超级源)
- UVA - 11624 Fire!(两次BFS 两种解法)
- 指南第5章 例题1 UVA 11624 Fire!(迷宫问题【多源BFS】)
- UVA 11624 BFS Fire
- UVa Fire! 11624 (BFS)
- uva 11624 - Fire! bfs
- UVa 11624 Fire! / BFS
- UVa 11624 Fire! bfs
- uva 11624 - Fire!(BFS)
- UVA - 11624 Fire! BFS
- uva 11624Fire! (bfs)
- 【UVA】 11624 Fire!【BFS】
- 常用4款原型设计软件对比评测
- 检测cpu是否支持虚拟化和二级地址转换
- hdu1455 poj 1011 sticks
- ENVI下DOM数据生产专题之正射校正
- GetLastError()问题
- uva 11624 Fire!(迷宫问题加 着火 两次bfs)
- BLOG启示录-WORDPRESS博客建设与经营 pdf 下载
- C++著名程序库的比较和学习经验
- 编译ARM平台的drcom
- hdu 1253 胜利大逃亡 (三维bfs)
- 使用SQL Server 2005作业设置定时任务 转
- vim最新转载的
- ibdata1文件大小缩减
- java程序员需要了解的几个开源协议