POJ-3669

来源:互联网 发布:淘宝开放平台 什么 编辑:程序博客网 时间:2024/06/04 18:54

代码:

#include<cstdio>#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;typedef pair<int,int> P;#define INF 0x3f3f3f3fint m;int x[50001],y[50001],t[50001];int maze[501][501];int d[501][501];///这样定义数组不太好呀int dx[4]={-1,1,0,0};int dy[4]={0,0,-1,1};///分别是上下左右四个方向int bfs(){    if(maze[0][0]==0)///一开始就被砸        return -1;    queue<P> que;///大写的P(p)比较小    que.push(P(0,0));    d[0][0]=0;    while(!que.empty())    {        P p=que.front();///取出队首元素        que.pop();        int x=p.first,y=p.second;        if(maze[x][y]==INF)///这里的maze是已经初始化好的            return d[x][y];///所以如果这里的maze[x][y]还是INF的话那就代表了这块地方是安全的        for(int i=0;i<4;i++)///经典的思路和代码流程        {            int nx=x+dx[i],ny=y+dy[i];///为啥不限制上界呢            if(d[nx][ny]==INF&&d[x][y]+1<maze[nx][ny]&&nx<=301&&ny<=301&&nx>=0&&ny>=0)            {                que.push(P(nx,ny));                d[nx][ny]=d[x][y]+1;            }        }    }    return -1;}void solve(){    memset(maze,INF,sizeof(maze));///这个INF代表了流星砸到的时间是INF,就是永远也砸不到呀    memset(d,INF,sizeof(d));    for(int i=0;i<m;i++)///自己动手把迷宫构建出来    {        maze[x[i]][y[i]]=min(maze[x[i]][y[i]],t[i]);        for(int j=0;j<4;j++)        {            int nx=x[i]+dx[j],ny=y[i]+dy[j];            if(nx<=301&&ny<=301&&nx>=0&&ny>=0)///把上下界都限制住肯定错不了                maze[nx][ny]=min(maze[nx][ny],t[i]);        }    }    int ans=bfs();    cout<<ans<<endl;}int main()///层次很鲜明呀{    ios::sync_with_stdio(false);///必加    cin>>m;    for(int i=0;i<m;i++)        cin>>x[i]>>y[i]>>t[i];    solve();    return 0;}


  自己手动创建迷宫,真心强,反正我是想不到这么写;一开始我还想着先把所有所有流星砸到的地方都在maze数组里面记录一下就行了,再一看题,还有时间上的先后问题;后来又想每有一个流星砸过来的时候再对maze数组初始化,然后再bfs搜索一遍,再细想,这也太复杂了吧!

  先把maze数组中的元素都初始化INF,代表流星永远都砸不到(真TM机智),然后再把流星最早砸到某个地方的时间记录到maze数组中以便用于后来时间上比较。真强!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 职称年审过期了怎么办 嘉兴驾模预约怎么办 电大考试去不了怎么办 负债高怎么办房贷 宁波鄞州银行卡怎么办 硕士学位实验数据不好怎么办 小区外过车很吵怎么办 建筑物初级消防证书怎么办 毕业答辩去不了怎么办 卡波西水痘样疹怎么办 58企业认证失败怎么办 炸鸡店没生意怎么办 你好漂亮重名了怎么办 医保卡被冒用怎么办 理财钱被骗走怎么办 个体户怎么办三方协议 社保户籍错了怎么办 身份证号码变更后驾驶证怎么办 公司倒闭欠工资怎么办 海南买房要社保怎么办? 工商核名不过怎么办 税局要求查账怎么办 完税凭证丢了怎么办 开票开错了怎么办 上海居住证搬家了怎么办 上海无户口 医保怎么办 淘宝账号注销不了怎么办 淘宝账号被覆盖怎么办 淘宝号注册不了怎么办 appleid密码忘了怎么办 蘑菇街用白富美后忘记账号怎么办 不知道宽带账号怎么办 上网用户名忘了怎么办 别人借淘宝号怎么办 不知道ipad密码怎么办 捡的ipad密码怎么办 12306注册名已存在怎么办 忘记网银用户名怎么办 登录用户名忘了怎么办 网银登录错误怎么办 路由器账号忘了怎么办