zoukankan      html  css  js  c++  java
  • P2895 [USACO08FEB]Meteor Shower S

    • 初始化\(g[i][j]\)为INF表示没被炸毁
    • 导弹连同周围四个区域一同炸毁
    • 多次炸毁的区域炸毁时间取第一次炸毁的时间
    const int N=50010;
    int g[310][310];
    int dist[310][310];
    int n;
    
    bool check(int x,int y)
    {
        return x>=0 && y>=0;
    }
    
    int bfs()
    {
        memset(dist,-1,sizeof dist);
        queue<PII> q;
        q.push({0,0});
        dist[0][0]=0;
    
        while(q.size())
        {
            PII t=q.front();
            q.pop();
    
            int x=t.fi,y=t.se;
    
            if(g[x][y] == INF) return dist[x][y];
    
            for(int i=0;i<4;i++)
            {
                int a=x+dx[i],b=y+dy[i];
                if(!check(a,b) || ~dist[a][b]) continue;
    
                if(g[a][b]==INF || g[a][b] > dist[x][y]+1)
                {
                    dist[a][b]=dist[x][y]+1;
                    q.push({a,b});
                }
            }
        }
        return -1;
    }
    
    int main()
    {
        cin>>n;
    
        memset(g,0x3f,sizeof g);
    
        for(int i=0;i<n;i++)
        {
            int x,y,t;
            cin>>x>>y>>t;
            g[x][y]=min(g[x][y],t);
            for(int i=0;i<4;i++)
            {
                int a=x+dx[i],b=y+dy[i];
                if(check(a,b)) g[a][b]=min(g[a][b],t);
            }
        }
    
        int t=bfs();
        cout<<t<<endl;
    
        //system("pause");
    }
    
  • 相关阅读:
    js实现对身份证校验
    zip解压缩
    zip压缩
    文件内容编解码
    文件的操作
    Mysql账号管理
    深度优先算法DFS
    Java常见知识问答
    Hibernate的单向OneToMany、单向ManyToOne
    Angularjs在线编辑器
  • 原文地址:https://www.cnblogs.com/fxh0707/p/13674588.html
Copyright © 2011-2022 走看看