UVA 11624-Fire!-BFS-
来源:互联网 发布:cdn网络加速 编辑:程序博客网 时间:2024/05/16 17:48
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28833
题意:就是找起点S到走出n*m格子外的最短时间
开始有一些Fire点,每单位时间会四处延伸
先预处理好每个格子最先着火的时间。
在bfs找最短路的基础上加多一个判断是否着火即可
复杂度(NM)
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <set>#include <vector>#include <iostream>using namespace std;const double pi=acos(-1.0);double eps=0.000001; int min(int a,int b){return a<b?a:b;} int max(int a,int b){return a>b?a:b;}int r,c;int stx,sty;struct node{int x,y,t;node(){}node(int a,int b,int c){x=a,y=b;t=c;}}; int ok=0;char tm[1005][1005];int vis[1005][1005];//着火时间int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};int visited[1005][1005];//访问过queue <node> q,que; void fire(){while(!que.empty()){//printf("%d\n",que.size());node tt=que.front();que.pop();int x=tt.x;int y=tt.y;int cur=tt.t;for (int i=0;i<4;i++){int xx=x+dx[i];int yy=y+dy[i];if (!(xx>=1&&xx<=r&&yy>=1&&yy<=c))continue;if (tm[xx][yy]=='#')continue;if (vis[xx][yy]!=-1) continue;vis[xx][yy]=cur+1;que.push(node(xx,yy,cur+1));} } }int main(){ int t;cin>>t;while(t--){int i,j;ok=0;memset(vis,-1,sizeof vis);memset(visited,0,sizeof visited);cin>>r>>c; for (i=1;i<=r;i++)scanf("%s",tm[i]+1);while(!que.empty()) que.pop();for (i=1;i<=r;i++){for (j=1;j<=c;j++){if (tm[i][j]=='J') {stx=i,sty=j;}if (tm[i][j]=='F') { que.push(node(i,j,0)); vis[i][j]=0; } }}fire(); node st(stx,sty,0);while(!q.empty()) q.pop();q.push(st);int flag=-1;visited[stx][sty]=1;while(!q.empty()){node tp=q.front();q.pop();for (int i=0;i<4;i++){int xx=tp.x+dx[i];int yy=tp.y+dy[i];if (!(xx>=1&&xx<=r&&yy>=1&&yy<=c)){flag=tp.t;break;}if (tm[xx][yy]=='#')continue;if (vis[xx][yy]!=-1&&vis[xx][yy]<=tp.t+1)continue;if (visited[xx][yy])continue;q.push(node(xx,yy,tp.t+1));visited[xx][yy]=1;} if (flag!=-1)break;}if (flag!=-1) printf("%d\n",flag+1);else printf("IMPOSSIBLE\n");}return 0;}
0 0
- 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】
- UVA 11624 - Fire!(BFS)
- uva 11624 Fire!(bfs)
- uva 11624 Fire (BFS)
- BFS-UVA-11624-Fire!
- UVA 11624-Fire!-BFS-
- UVa 11624 Fire! ( BFS )
- UVA 11624 Fire!【BFS】
- UVA 11624 fire! (bfs)
- UVa -11624 Fire -bfs
- 自动检测iOS网络并可跳转至设置界面设置网络
- PYTHON-进阶-编码处理小结
- P2P理财需谨防披着“国资”外衣的狼
- 虚拟机的安装
- 从零开始学递归与分治
- UVA 11624-Fire!-BFS-
- Python debug —— invalid literal for int() with base 10
- IOS开发系列--Objective-C之协议、代码块、分类
- iOS开发之多线程
- 大部分人努力程度之低,根本轮不到拼天赋
- java排序——选择、插入、冒泡、二分法
- 【bzoj3996】【TJOI2015】【线性代数】【最小割】
- FaceNet--Google的人脸识别
- unity 链接 eclipse 调试