博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
广搜最短路(最短时间到达目的地),POJ(3669)
阅读量:6260 次
发布时间:2019-06-22

本文共 2400 字,大约阅读时间需要 8 分钟。

题目链接:

解题报告:

1、流星坠落的点,四周和自己本身都被毁灭,不断更新每个点被毁灭的时候的最短时间。

2、搜索终点是,到达某个点,这个不会有流星毁灭他,即他的毁灭的时间大于最后一个流星到达时的时间。

 

#include 
#include
#include
using namespace std;#define MAX 302 ///地图宽度int m; ///流星数int map[MAX][MAX]; ///地图bool visited[MAX][MAX]; ///是否访问过int last; ///最晚的流星时间int go[][2] ={
{
1,0},{-1,0},{
0,1},{
0,-1},{
0,0}}; ///五个方向struct Meteor{ int x; int y; int t;}meteor[50000]; ///流星结构typedef Meteor Node; ///节点结构,用于bfsint max(int a, int b){ return a > b ? a : b;}int bfs(){ memset(visited, false, sizeof(visited)); queue
q; ///队列 Node fir; ///起始点入队 fir.x = fir.y = fir.t = 0; visited[0][0] = true; q.push(fir); while (!q.empty()) ///bfs { Node now = q.front(); q.pop(); for (int i = 0; i < 4; i++) ///每次必须行动1格 { Node tmp = now; tmp.x += go[i][0]; tmp.y += go[i][1]; tmp.t++; if (tmp.x >= 0 && tmp.y >= 0 && map[tmp.x][tmp.y]>tmp.t && !visited[tmp.x][tmp.y]) ///没越界、流星还未砸这个格子、还没访问过(重复访问就是不是bfs最优解了) { visited[tmp.x][tmp.y] = true; ///标记 if (map[tmp.x][tmp.y] > last) ///如果格子不会被砸到 { return tmp.t; } q.push(tmp); } } } return -1;}int main(){ while (scanf("%d", &m) != EOF) { for (int i = 0; i < m; i++) { scanf("%d%d%d", &meteor[i].x, &meteor[i].y, &meteor[i].t); } memset(map, 0x7f, sizeof(map)); ///要严谨一点可以用0x7fffffff,不过就不能用memset了 for (int i = 0; i < m; i++) { ///计算最晚流星的时间 if (i == 0) last = meteor[i].t; else last = max(last, meteor[i].t); ///更新地图上某个点的最快的流星下落时间 for (int j = 0; j < 5; j++) { int tx = meteor[i].x + go[j][0]; int ty = meteor[i].y + go[j][1]; if (tx >= 0 && ty >= 0 && map[tx][ty]>meteor[i].t) { map[tx][ty] = meteor[i].t; } } } if (map[0][0] == 0) ///起始点被砸直接gg printf("-1\n"); else ///否则bfs printf("%d\n", bfs()); } return 0;}

 

转载于:https://www.cnblogs.com/TreeDream/p/5375004.html

你可能感兴趣的文章
[转]通过零拷贝实现有效数据传输
查看>>
Android基于box2d开发弹弓类游戏[二]-------------游戏界面的搭建&移动游戏场景
查看>>
spring mvc 接受数组
查看>>
syslog服务器配置
查看>>
visual studioC#调用MATLAB生成的DLL
查看>>
ArrayList,LinkedList源码解析
查看>>
java推荐书籍及下载(持续更新)
查看>>
解决iframe周围的空白问题 td自适应iframe高度
查看>>
雷达标定
查看>>
[解决]小程序要求的 TLS 版本必须大于等于 1.2
查看>>
jQuery箭头切换图片 - 学习笔记
查看>>
第七周编程总结
查看>>
济南-1031试题解题报告
查看>>
最短路径(迪杰斯特拉算法)- 数据结构和算法64
查看>>
WCF或webservice跨域 这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略...
查看>>
链表例题
查看>>
网站设置中的各个功能
查看>>
微软职位内部推荐-SW Engineer II for Skype
查看>>
python中的关键字符
查看>>
微软职位内部推荐-Senior Engineering Lead
查看>>