//好久没刷题了,生疏了。

题意分析:

  题意理解为在一个二维的正向坐标轴上,一个点(流星)连同它的上下左右的四个点会在某一个时刻被破坏。一个人在原点,问她到达安全区的最小时间是多少。

代码思路:  

  从原点开始搜索,如果当前的点是安全的(不会被破坏掉),那么就结束了。不然的话,向四个方向搜索,如果该方向的点没有被搜索过,并且到达该点的时间小于那一点被破坏的最小时间减一,那么就认为该点是可以到达的。记录到达该点的最小时间,把该点入队。

  搜索的之前的处理是这样的。把每个点都设置为安全(永远不会被破坏),该点被破坏的时间为INF。读入数据的时候,对每一个输入,我们对五个点(输入坐标的点和其上下左右的四个点)进行处理:该点会被破坏,每次取该点被破坏的最小时间。

  需要注意的是:虽然输入的坐标范围x,y是[0,300],但是安全点的坐标可能大于300,最大可能是302。我就这样错了一次。

个人的代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std; const int N = ,INF=;
struct node
{
int x,y;
bool f;//会不会被破坏
int t;//被破坏最小时间
int s;//走到这里需要的最小时间
}p[N][N];
bool vis[N][N];
int step;
bool isin(int x,int y)
{
return x<=N&&x>=&&y<=N&&y>=;
}
int dx[]={,,,,-};
int dy[]={,,-,,};
queue<node> q;
node p1,p2;
void bfs()
{
int i,j,k;
while(!q.empty())
{
p1=q.front();
q.pop();
//printf("%d %d %d\n",p1.x,p1.y,p1.s);
if(p1.f==) {step=p1.s;break;}
for(k=;k<;k++)
{
i=p1.x+dx[k];
j=p1.y+dy[k];
if(!vis[i][j]&&isin(i,j))
{
if(p1.s+<p[i][j].t)
{
p[i][j].s=p1.s+;
q.push(p[i][j]);
vis[i][j]=;
}
}
}
}
}
int main()
{
//freopen("test.txt","r",stdin);
int m,i,x,y,t,j;
while(scanf("%d",&m)!=EOF)
{
for(i=;i<N;i++){
for(j=;j<N;j++){
p[i][j].x=i;
p[i][j].y=j;
p[i][j].f=;
p[i][j].t=INF;
}
}
for(i=;i<m;i++){
scanf("%d%d%d",&x,&y,&t);
for(j=;j<;j++)
{
int a=x+dx[j],b=y+dy[j];
if(isin(a,b))
{
p[a][b].f=;
p[a][b].t=min(p[a][b].t,t);
}
}
}
while(!q.empty()) q.pop();
p[][].s=;
q.push(p[][]);
vis[][]=;
step=-;
memset(vis,,sizeof(vis));
bfs();
printf("%d\n",step);
}
return ;
}

  

poj3669 广搜的更多相关文章

  1. HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?

    这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others)  ...

  2. HDU 5652(二分+广搜)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...

  3. nyoj 613 免费馅饼 广搜

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  4. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  5. poj 3278:Catch That Cow(简单一维广搜)

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 45648   Accepted: 14310 ...

  6. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  7. 广搜+打表 POJ 1426 Find The Multiple

    POJ 1426   Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25734   Ac ...

  8. 双向广搜 codevs 3060 抓住那头奶牛

    codevs 3060 抓住那头奶牛 USACO  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold   题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...

  9. 双向广搜+hash+康托展开 codevs 1225 八数码难题

    codevs 1225 八数码难题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description Yours和zero在研究A*启 ...

随机推荐

  1. python学习笔记--深拷贝与浅拷贝的区别

    首先我们来讲讲我们python中的可变对象和不可变对象: 可变对象:该对象指向内存中的值是可以改变的.实际上是其所指的值直接发生改变,而不是发生复制,或者开辟一个新的地址空间.例如:列表list,字典 ...

  2. Python 爬虫之第一次接触

    爬豆瓣网电影TOP250名单 ------- 代码未写完,等待更新 import requests from requests.exceptions import RequestException i ...

  3. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

  4. 团体程序设计天梯赛-练习集L1-006. *连续因子

    L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...

  5. TortoiseGit配置密钥的方法

    TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在Tortoi ...

  6. 优雅的退出/关闭/重启gunicorn进程

    在工作中,会发现gunicorn启动的web服务,无论怎么使用kill -9 进程号都是无法杀死gunicorn,经过我一番百度和谷歌,发现想要删除gunicorn进程其实很简单. 第一步获取Guni ...

  7. 【codeforces 515A】Drazil and Date

    [题目链接]:http://codeforces.com/contest/515/problem/A [题意] 每次只能走到相邻的四个格子中的一个; 告诉你最后走到了(a,b)走了多少步->s ...

  8. mysql参数设置与查看

    查看默认的参数设置(包含读取到的参数文件中的设置) mysqld --verbose --help   查看默认的参数设置(不包含参数文件中的设置) mysqld --no-defaults --ve ...

  9. sgu 176 有源汇有上下界的最小流模板题

    /*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282 有上下界的有源最小流 */ #include<st ...

  10. 使用外部LDAP用户认证后,DJANGO用户如何作登陆的操作?

    公司的要求,使用公司的UM帐号验证密码,然后,在DJANGO里登陆. 因为没有authenticate函数,只有login函数,所以不能简单的使用用户来login,而需要加一个backend参数... ...