poj3669【bfs】
题意:
有个**要看流星雨,可是流星雨会砸死他的。。。
给出n个流星雨下落的坐标,时间,如果那个**在下落坐标或是上下左右就会gg,问你他最短跑到流星雨打不到的地方的时间。
思路:
①:预处理出一个矩阵,每个坐标代表最早下落时间;
②:直接bfs…中间要标记掉走到的坐标,不能往回走,还是满基础的。
贴一发挫code………….
#include<cstdio>
#include<map>
#include<queue>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define eps 1e-8
typedef __int64 LL;
const int INF=-1;
const int N=304;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
bool vis[N][N];
int ma[N][N];
int n;
bool Judge(int x,int y)
{
if(x<0||y<0||x>=302||y>=302)
return 0;
return 1;
}
void Init()
{
int x,y,t;
memset(ma,-1,sizeof(ma));
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&x,&y,&t);
if(ma[x][y]==-1)
ma[x][y]=t;
else
ma[x][y]=min(t,ma[x][y]);
for(int k=0;k<4;k++)
{
int xx=x+dx[k];
int yy=y+dy[k];
if(Judge(xx,yy))
{
if(ma[xx][yy]==-1)
ma[xx][yy]=t;
else
ma[xx][yy]=min(t,ma[xx][yy]);
}
}
}
}
struct asd{
int x,y;
int step;
};
asd now,next;
queue<asd>q;
int bfs()
{
int x,y,tp;
while(!q.empty())
q.pop();
memset(vis,0,sizeof(vis));
now.x=0;
now.y=0;
now.step=0;
vis[0][0]=1;
q.push(now);
while(!q.empty())
{
now=q.front();q.pop();
x=now.x;
y=now.y;
tp=now.step;
if(ma[x][y]==-1)
return tp;
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
next.x=xx;
next.y=yy;
next.step=tp+1;
if(!Judge(xx,yy)||vis[xx][yy])
continue;
if(ma[xx][yy]==-1)
return next.step;
if(next.step>=ma[xx][yy])
continue;
vis[xx][yy]=1;
q.push(next);
}
}
return -1;
}
int main()
{
scanf("%d",&n);
Init();
int ans;
ans=bfs();
printf("%d\n",ans);
return 0;
}
poj3669【bfs】的更多相关文章
- 【bfs】抓住那头牛
[题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次 ...
- 【bfs】拯救少林神棍(poj1011)
Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你 ...
- 【bfs】Knight Moves
[题目描述] 输入nn代表有个n×nn×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步. [输入] 首先输入一个nn,表示测试样例 ...
- 【bfs】1252 走迷宫
[题目描述] 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走. 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到).只能在水平方向或垂直方向走,不 ...
- 【bfs】献给阿尔吉侬的花束
[题目描述] 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫.今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪.现在研究员们想 ...
- 【bfs】迷宫问题
[题目描述] 定义一个二维数组: int maze[5][5] = { 0,1,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,1,0, }; 它表示一个迷 ...
- 【bfs】仙岛求药
[题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...
- 【bfs】BZOJ1102- [POI2007]山峰和山谷Grz
最后刷个水,睡觉去.Bless All! [题目大意] 给定一个地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w(i,j)是给定的.若两个格子有公共顶点,那么他们就是 ...
- poj3278-Catch That Cow 【bfs】
http://poj.org/problem?id=3278 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
随机推荐
- call lua function from c and called back to c
Just a simple example: --The c file: #include <stdio.h> #include "lua.h" #include & ...
- [Testing] Config jest to test Javascript Application -- Part 1
Transpile Modules with Babel in Jest Tests Jest automatically loads and applies our babel configurat ...
- 【算法编程】找出仅仅出现一次的数-singleNumber
题目意思: 一个数值数组中,大部分的数值出现两次,仅仅有一个数值仅仅出现过一次,求编程求出该数字. 要求,时间复杂度为线性,空间复杂度为O(1). 解题思路: 1.先排序.后查找. 因为排序的最快时间 ...
- 理解CSS中的BFC(块级可视化上下文)[译]
开篇 一些元素,如float元素,如position为absolute,inline-block,table-cell或table-caption的元素,以及overflow属性不为visible的元 ...
- 【iOS开发系列】cell切割线置顶
废话不多说,直接上代码: /** * tableViewCell切割线左側置顶 < 1 > */ -(void)viewDidLayoutSubviews { if ([_tableVie ...
- Java堆内存与栈内存对比
在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配 ...
- 如何理解pca和svd的关系?
主成分分析和奇异值分解进行降维有何共同点? 矩阵的奇异值分解 当矩阵不是方阵,无法为其定义特征值与特征向量,可以用一个相似的概念来代替:奇异值. 通常用一种叫奇异值分解的算法来求取任意矩阵的奇异值: ...
- fruitstrap 安装.app文件
1. 下载ipa的ios文件然后解压成.app的文件 2. 进入fruitstrap文件夹,copy .app文件到fruitstrap文件夹中 执行./fruitstrap -b umetrip.a ...
- Apach Web Server区别于其他应用服务器的主要特点是什么?
Web服务器一般指的是处理静态请求或转发http请求的服务器,而应用服务器一般是用来处理动态请求的服务器.
- Rowkey is the Crux Rowkey Design
Apache HBase ™ Reference Guide http://hbase.apache.org/book.html#rowkey.design The Effect of ColumnF ...