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

题意分析:

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

代码思路:  

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

  搜索的之前的处理是这样的。把每个点都设置为安全(永远不会被破坏),该点被破坏的时间为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 ;
}

  

最新文章

  1. Tree树节点选中及取消和指定节点的隐藏
  2. prompt() 方法,弹框带输入框
  3. [LeetCode] Sum Root to Leaf Numbers 求根到叶节点数字之和
  4. 浅谈我对C#中抽象类与接口的理解
  5. iOS 第三方开源库-----&gt;AFNetworking
  6. Palindrome Partitioning II
  7. Java Swing 快捷键
  8. bzoj1260[CQOI2007]涂色paint
  9. Hadoop-2.x的源码编译
  10. Bootstrap 实例 - 模态框(Modal)插件
  11. mvc Html.RenderAction方法解析
  12. android screenOrientation
  13. docker 现实---中小企业docker环境结构(五)
  14. escape,encodeURI,encodeURIComponent函数比较
  15. archlinux系统安装博通B43XX系列无线网卡驱动
  16. SpringMVC源码分析--容器初始化(四)FrameworkServlet
  17. 服务器禁止ping
  18. nginx 配置 同一域名端口下,根据URL 导向不同的项目目录
  19. Class_fourth
  20. BF算法(模式匹配)

热门文章

  1. 00_Rust安装及Hello World
  2. C语言指针与指向指针的指针
  3. vs2015 配置 cplex
  4. 基本数据类型:字符串(str)
  5. socket状态
  6. Windows读取NXP MiFare Ultralight C类型NFC卡片的信息
  7. BZOJ——T 1801: [Ahoi2009]chess 中国象棋
  8. vs2010+cuda5.0+qt4.8
  9. CF #323 DIV2 D题
  10. [csdn markdown]使用摘记一源码高亮及图片上传和链接