HDU1242 Rescue(优先队列加BFS)
来源:互联网 发布:知与行投稿 编辑:程序博客网 时间:2024/06/01 08:28
这题是一道BFS题目,要从终点逆着推起点,需要用上优先队列。
点击打开链接
#include <iostream>#include <queue>#include <string.h>using namespace std;int visit[205][205],s[]={1,-1,0,0},t[]={0,0,1,-1},ss,tt,flag,n,m;char map[205][205];struct sb{int step,x,y;bool operator<(const sb &t) const{return step>t.step;}};priority_queue<sb>q;int bfs(int xx,int yy){int i;sb e={0,xx,yy};visit[xx][yy]=1;q.push(e);while(!q.empty()){e=q.top();q.pop();for(i=0;i<4;i++){ss=e.x+s[i];tt=e.y+t[i];if(ss>=1&&ss<=n&&tt>=1&&tt<=m){if(!visit[ss][tt]&&map[ss][tt]=='.'){sb e1={e.step+1,ss,tt};q.push(e1);visit[ss][tt]=1;}else if(!visit[ss][tt]&&map[ss][tt]=='r'){flag=1;break;}else if(!visit[ss][tt]&&map[ss][tt]=='x'){sb e1={e.step+2,ss,tt};q.push(e1);visit[ss][tt]=1;}}}if(flag==1)break;}while(!q.empty())q.pop();return e.step+1;}int main(){int i,j,xx,yy;while(cin>>n>>m){memset(map,0,sizeof(map));memset(visit,0,sizeof(visit));flag=0;for(i=1;i<=n;i++){for(j=1;j<=m;j++){cin>>map[i][j];if(map[i][j]=='a'){xx=i;yy=j;}}}int count=bfs(xx,yy);if(flag==1)cout<<count<<endl;elsecout<<"Poor ANGEL has to stay in the prison all his life."<<endl;}return 0;}
- HDU1242 Rescue(优先队列加BFS)
- hdu1242 Rescue(优先队列bfs)
- Rescue HDU1242 (BFS+优先队列)
- HDU1242:Rescue(BFS+优先队列)
- hdu1242 Rescue 优先队列BFS
- HDU1242 Rescue-BFS,优先队列
- HDU1242:Rescue(BFS+优先队列)
- HDU1242 Rescue BFS+优先队列
- HDU1242 rescue 【BFS+优先队列】
- HDU1242:Rescue(BFS+优先队列)
- hdu1242 Rescue bfs+优先队列
- hdu1242 Rescue BFS+优先队列
- hdu1242 Rescue(BFS +优先队列 or BFS )
- hdu1242 Rescue(BFS +优先队列 or BFS )
- HDU1242 Rescue(广搜BFS+优先队列)
- hdu1242(BFS+优先队列)
- hdu1242(bfs+优先队列)
- HDU1242(优先队列,最短路)Rescue
- Behavior driven development with Ruby
- ARM中变量存放的位置
- C#反射浅析
- nyoj 树状数组系列
- MVC 绑定下拉列表
- HDU1242 Rescue(优先队列加BFS)
- 把一个字符串转换为时间类型 并加 星期几
- IOS 关于拍照界面,复制,粘贴等菜单的显示为英文的问题
- 学习笔记: 树链剖分
- 开发部项目编码规范说明
- Photoshop零基础
- Android五大布局
- DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏
- eclipse 清除所有断点