题目地址

  为判断某时刻能否走到某位置,建立shi数组,记录某位置最早t时刻就不能走。(初始化为-1)之后开始从(0,0)出发bfs,用bu数组记录走到某一位置时花费的步数,并且需要用vi数组记录是否走到过某个位置,不然慧反复走出错。注意可走的范围是第一象限,只是输入的陨石掉落位置是0——300。(之前因为这个判断位置是否合法WA了……)。

  参考代码:

  

 #include<cstdio>
#include<cstring>
#include<queue>
#include <iostream>
using namespace std;
int shi[][],m,bu[][],dir[][]={{,},{-,},{,},{,-}};
bool vi[][];
typedef pair<int ,int >P;
int si,sj,t;
int bfs()
{
queue<P> que;
P p;
que.push(P(,));
while(que.size())
{
p=que.front();
que.pop();
if(shi[p.first][p.second]==-)
return bu[p.first][p.second];
int i,xx,yy;
for(i=;i<;i++)
{
xx=p.first+dir[i][];
yy=p.second+dir[i][];
if(xx>=&&xx<=&&yy>=&&yy<=&&(shi[xx][yy]==-||bu[p.first][p.second]+<shi[xx][yy])&&!vi[xx][yy])
{
que.push(P(xx,yy));
bu[xx][yy]=bu[p.first][p.second]+;
vi[xx][yy]=true;
}
}
}
return -;
}
int main()
{
memset(shi,-,sizeof(shi));
memset(bu,,sizeof(bu));
memset(vi,false,sizeof(vi));
scanf("%d",&m);
int i,an;
while(m--)
{
scanf("%d%d%d",&si,&sj,&t);
if(shi[si][sj]==-||shi[si][sj]>t)
shi[si][sj]=t;
for(i=;i<;i++)
{
int xx,yy;
xx=si+dir[i][];
yy=sj+dir[i][];
if(xx>=&&xx<=&&yy>=&&yy<=&&(shi[xx][yy]>t||shi[xx][yy]==-))
shi[xx][yy]=t;
}
}
vi[][]=true;
an=bfs();
printf("%d\n",an);
return ;
}

(BFS)poj3669-Meteor Shower的更多相关文章

  1. poj3669 Meteor Shower(BFS)

    题目链接:poj3669 Meteor Shower 我只想说这题WA了后去看讨论才发现的坑点,除了要注意原点外,流星范围题目给的是[0,300],到302的位置就绝对安全了... #include& ...

  2. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  3. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  4. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

  5. 【BZOJ5492】[HNOI2019]校园旅行(bfs)

    [HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...

  6. 深度优先搜索(DFS)和广度优先搜索(BFS)

    深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...

  7. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

  8. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

  9. 层层递进——宽度优先搜索(BFS)

    问题引入 我们接着上次“解救小哈”的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLian/p/74296 ...

  10. HDU.2612 Find a way (BFS)

    HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...

随机推荐

  1. ajax 无刷新上传

    最近要做微信的图文上传,因为一个图文了表中可以有多个图文,所有按钮需要随时添加,所以做了一种无刷新上传的方法. 首先我们要在html页面中写上这样的几段代码 javascript: $(functio ...

  2. sql:sum(value)与count(letter),当用户不存在时查询到的值

    SELECT sum(value) FROM invoice where username='yueer' SELECT count(letters) FROM invoice where usern ...

  3. jQuery.last() 函数

    last() 函数详解 函数 获取当前对象的最后一个元素 语法 $selector.last() 返回值 返回值为一个对象 实例说明 代码 <!DOCTYPE html><html ...

  4. checkbox选中 和是否选中

    <input type="checkbox" <%--value="1"--%> id="checkboxOneInput" ...

  5. angular中动态添加的元素绑定事件问题

    $compile http://segmentfault.com/q/1010000000726448/a-1020000000727088 接口下载问题

  6. java/Android 接口调用的几种写法

    虽然Handler用的地方比较普遍,但是接口也有他的独特之处,比较直观,然后降低了耦合性 如有一接口,需要将数据传给使用的activity中,接口如下 public interface PushVal ...

  7. mac下使用sencha cmd+extjs6

    笔者刚接手公司一个项目,后台是使用extjs6做前端,php做api接口,两者通过ajax交互 没办法,不管接手的项目多么的挫逼,都还是要上的,拿人钱财替人消灾嘛 首先是安装sencha cmd ,百 ...

  8. centos下php安装swoole扩展

    官网:http://wiki.swoole.com/wiki/index/prid-1 国内Git镜像:http://git.oschina.net/matyhtf/swoole.git 下载源码后, ...

  9. mysql - 数据库、表 的创建

    -- 创建数据库 CREATE DATABASE IF NOT EXISTS ibs_environ DEFAULT CHARACTER SET utf8; -- 切换数据库 USE ibs_envi ...

  10. CSS3--transform

    transform:向元素应用2D或3D转换,该属性允许我们对属性旋转,缩放,移动,或倾斜. transfrom:none:定义不进行转换 transfrom:matrix(n,n,n,n,n,n); ...