UVA 11624 Fire!(kuangbin带你飞 专题一:简单搜索)
来源:互联网 发布:软件注册权登记 编辑:程序博客网 时间:2024/06/05 16:45
不得不吐槽UVA返回结果速度之慢....先BFS跑一边火能烧到所有点的最早时间并记录,然后在BFS人逃命的最短时间...,走到某一点如果这个点在这个时间没有火才能走...
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>#include<algorithm>#include<queue>using namespace std;char map[1002][1002];int r,c,used[1002][1002],sx,sy;//sx,sy是人的起点,used数组-2代表可走,-1代表墙或者走过,正数代表火烧到的时间int d[4][2]={1,0,-1,0,0,1,0,-1};struct node{ int x,y,t;};void bfsh()//火烧到的时间记录在used数组里,{ queue<node> q; node now,next; memset(used,-1,sizeof(used)); for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(map[i][j]=='.') used[i][j]=-2; else if(map[i][j]=='F') { used[i][j]=0; now.x=i,now.y=j,now.t=0; q.push(now); } else if(map[i][j]=='J') { sx=i,sy=j; } } } while(!q.empty()) { now=q.front(); q.pop(); for(int i=0;i<4;i++) { next.x=now.x+d[i][0]; next.y=now.y+d[i][1]; next.t=now.t+1; if(next.x<0||next.y<0||next.x>=r||next.y>=c||used[next.x][next.y]!=-2) continue; used[next.x][next.y]=next.t; q.push(next); } }}int bfsr()//人逃命的时间考虑这个点是否着火...{ node now,next; queue<node> q; now.x=sx,now.y=sy,now.t=0; q.push(now); used[sx][sy]=-1; while(!q.empty()) { now=q.front(); q.pop(); if(now.x==r-1||now.x==0||now.y==c-1||now.y==0) return now.t+1; for(int i=0;i<4;i++) { next.x=now.x+d[i][0]; next.y=now.y+d[i][1]; next.t=now.t+1; if(next.x<0||next.y<0||next.x>=r||next.y>=c||(used[next.x][next.y]!=-2&&used[next.x][next.y]<=next.t))//最后一个判断是能走并且这个时间没有着火 continue; used[next.x][next.y]=-1; q.push(next); } } return -1;}int main(){ int T; cin>>T; while(T--) { cin>>r>>c; for(int i=0;i<r;i++) scanf("%s",map[i]); int ans; bfsh(); ans=bfsr(); if(ans==-1) cout<<"IMPOSSIBLE"<<endl; else cout<<ans<<endl; } return 0;}
0 0
- UVA 11624 Fire!(kuangbin带你飞 专题一:简单搜索)
- UVA 11624 Fire! ([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索J - Fire!(UVA 11624)
- [kuangbin带你飞]专题一 简单搜索 J - Fire! UVA 11624
- Fire Game [kuangbin带你飞]专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索-J - Fire!
- FZU 2150 Fire Game(kuangbin带你飞 专题一:简单搜索)
- FZU 2150 Fire Game ([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索I - Fire Game(FZU 2150)
- [kuangbin带你飞]专题一 简单搜索 I - Fire Game FZU 2150
- [kuangbin带你飞]专题一 简单搜索 -I - Fire Game
- [kuangbin带你飞]专题一 简单搜索 J UVA 11624
- kuangbin带你飞 专题一 简单搜索 (题解)
- [kuangbin神带你飞]专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 总结
- Kuangbin带你飞专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 D - Fliptile
- [kuangbin带你飞]专题一 简单搜索 - H - Pots
- hadoop环境搭建
- A Generic method to modify the names in a JSONObject
- 平面向量加法(10)
- UITableView常用函数
- 查找整数
- UVA 11624 Fire!(kuangbin带你飞 专题一:简单搜索)
- 多重背包问题
- POJ 1952 LITTLE SHOP OF FLOWERS(DP动归,最长递减子序列)
- android屏幕分辨率及自动匹配相关
- 获取沙盒目录
- Android动画(图片闪烁、左右摇摆、上下晃动等效果)
- 离线检测 window.navigator.onLine
- Android Fragment的使用
- snort openappid