(HDU1242)Rescue
来源:互联网 发布:淘宝开店手机端 编辑:程序博客网 时间:2024/06/05 16:09
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1242
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>#include<sstream>#include<set>#include<fstream>#include<iomanip>#include<queue>#define M 222int n,m,a,b,X,Y;int vis[M][M];char ma[M][M];int dir[4][2]={0,1,0,-1,1,0,-1,0};struct state{ int x,y,step; friend bool operator<(state x1,state x2){ return x1.step>x2.step; //优先队列,按照步数从小到大排列(最小优先队列) }};bool check(int x,int y){ if(x<0||y<0||x>=n||y>=m||vis[x][y]||ma[x][y]=='#') return 1; return 0;}int BFS(){ priority_queue <state> Q; state st,next; st.x=a; st.y=b; st.step=0; Q.push(st); vis[a][b]=1; while(!Q.empty()) { st=Q.top(); Q.pop(); if(st.x==X&&st.y==Y) return st.step; for(int i=0;i<4;i++) { next.x=st.x+dir[i][0]; next.y=st.y+dir[i][1]; if(check(next.x,next.y)) continue; if(!vis[next.x][next.y]){ vis[next.x][next.y]=1; if(ma[next.x][next.y]=='x') next.step=st.step+2; else next.step=st.step+1; Q.push(next); } } } return 0;}int main(){ while(~scanf("%d%d",&n,&m)&&n&&m) { memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>ma[i][j]; if(ma[i][j]=='r') {a=i;b=j;} if(ma[i][j]=='a') {X=i;Y=j;} } } int ans=BFS(); if(ans) cout<<ans<<endl; else cout<<"Poor ANGEL has to stay in the prison all his life."<<endl; } return 0;}
0 0
- hdu1242 rescue
- hdu1242 Rescue
- hdu1242 Rescue
- HDU1242 Rescue
- hdu1242 Rescue
- HDU1242 Rescue
- HDU1242-Rescue
- HDU1242-Rescue
- HDU1242 Rescue
- (HDU1242)Rescue
- Rescue (hdu1242)
- HDU1242 Rescue 【BFS】
- hdu1242——Rescue
- hdu1242 rescue【BFS】
- hdu1242(Rescue)
- hdu1242 Rescue(BFS)
- HDU1242 Rescue(BFS松弛)
- H - Rescue hdu1242
- ServletContext总结
- 校招——面试(Android岗)总结
- expect的简单使用,linux交互性shell
- KMP算法实现原理
- Name That Number(模拟)(USACO)
- (HDU1242)Rescue
- HDU 3415 Max Sum of Max-K-sub-sequence
- 刘某某研究生之路
- Genymotion终于复活了
- 51nod oj 1191 消灭兔子 【vector 二分+贪心】
- Spark 中的二次排序Java实现
- 建模
- 第3周项目2-建设“顺序表”算法库
- (HDU1010)Tempter of the Bone