hdu1072Nightmare(广搜)
来源:互联网 发布:手机淘宝突然打不开了 编辑:程序博客网 时间:2024/04/30 21:11
题目链接:click~
题目解析:仍然是走过的点可以再走,所以标记数组vis[]记录的是经过该点的最大(而不是最小)的爆炸时间。
代码如下;
#include<cstdio>#include<cstring>#include<queue>#include<iostream>using namespace std;int map[10][10];int vis[10][10];int m,n;int begin_x,begin_y,end_x,end_y;int dx[5]={0,0,1,-1};int dy[5]={1,-1,0,0};struct node{ int x; int y; int time; int bomb;};void bfs(){ memset(vis,0,sizeof(vis)); node node1,node2; queue<node>q; node1.x=begin_x; node1.y=begin_y; node1.time=0; node1.bomb=6; q.push(node1); vis[node1.x][node1.y]=6; //标记时注意走过的点任然可以再走,所以保存的是经过该点的最大爆炸时间 while(!q.empty()) { node2=q.front(); //printf("%d %d %d %d-->\n",node2.x,node2.y,node2.time,node2.bomb); q.pop(); if(node2.x==end_x&&node2.y==end_y) { printf("%d\n",node2.time); return ; } for(int i=0;i<4;i++) { node1.x=node2.x+dx[i]; node1.y=node2.y+dy[i]; if(node1.x>=1&&node1.x<=m&&node1.y>=1&&node1.y<=n) //限制坐标 { if(node2.bomb>=2) //限制前一个点炸弹爆炸的时间 { if(map[node1.x][node1.y]==1||map[node1.x][node1.y]==3) { node1.time=node2.time+1; node1.bomb=node2.bomb-1; if(node1.bomb>vis[node1.x][node1.y]) { q.push(node1); vis[node1.x][node1.y]=node1.bomb; } } if(map[node1.x][node1.y]==4) { node1.time=node2.time+1; node1.bomb=6; if(node1.bomb>vis[node1.x][node1.y]) { q.push(node1); vis[node1.x][node1.y]=node1.bomb; } } } } } } printf("-1\n");}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d",&m,&n); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { scanf("%d",&map[i][j]); if(map[i][j]==2) { begin_x=i; begin_y=j; } if(map[i][j]==3) { end_x=i; end_y=j; } } bfs(); } return 0;}
0 0
- hdu1072Nightmare(广搜)
- 广搜
- 广搜
- 广搜
- 广搜
- 广搜
- 广搜
- POJ_3278_广搜
- 深搜 广搜
- hdu 1026 广搜
- 1242 rescue 广搜
- zoj 1091 广搜。
- POJ3083 广搜&模拟
- poj3278基本广搜
- POJ3414广搜&回溯
- nysit 20 广搜
- 双向广搜
- 双向广搜
- iOS 获取手机的型号,系统版本,软件名称,软件版本
- 单链表反序递归版本和迭代版本
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- zoj_2165
- 即使我有最新
- hdu1072Nightmare(广搜)
- 最全的Android源码目录结构详解
- 使用开源的tessnet-orc识别验证码——训练篇
- UVA 12293 - Box Game(博弈)
- 从零实现MVC框架之AOP事务(5)
- Android中隐式Intent的用途(1) -- 基础知识
- 现代浏览器的后台工作原理
- android Notification
- Svn 服务器 多项目管理 及需要注意的情况