• AC日记——灾后重建 洛谷 P1119


    灾后重建

    思路:

      看到n<=200,思考弗洛伊德算法;

      如何floyed呢?

      floyed是一种动态规划求最短路的算法;

      它通过枚举中间点来更新两点之间最短路;

      回到这个题本身;

      所有点的重建完成的时间和询问的时间都已经排好序了;

      所以,我们把floyed拆开;

      对于一个三维的k,i,j的floyed算法;

      我们判断当前的询问在哪两个相邻的k之间;

      然后,我们判断当时的连通性以及最短路情况;

    来,上代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define INF 0x7ffffff
    
    int n,m,f[205][205][205],ti[205];
    
    inline void in(int &now)
    {
        char Cget=getchar();now=0;
        while(Cget>'9'||Cget<'0') Cget=getchar();
        while(Cget>='0'&&Cget<='9')
        {
            now=now*10+Cget-'0';
            Cget=getchar();
        }
    }
    
    int main()
    {
        in(n),in(m);
        for(int k=0;k<=n+2;k++)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++) f[k][i][j]=INF;
            }
        }
        for(int i=0;i<n;i++) in(ti[i]);
        int u,v,w;
        for(int i=1;i<=m;i++)
        {
            in(u),in(v),in(w);
            f[0][u][v]=w;
            f[0][v][u]=w;
        }
        for(int k=1;k<=n;k++)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                {
                    f[k][i][j]=min(f[k-1][i][j],f[k-1][i][k-1]+f[k-1][k-1][j]);
                }
            }
        }
        in(m);int tot=1;
        for(int i=1;i<=m;i++)
        {
            in(u),in(v),in(w);
            if(ti[u]>w||ti[v]>w)
            {
                printf("-1
    ");
                continue;
            }
            while(ti[tot]<=w&&tot<n) tot++;
            int now=tot-1;
            if(ti[now]<=w)
            {
                if(f[tot][u][v]==INF) printf("-1
    ");
                else printf("%d
    ",f[tot][u][v]);
            }
            else printf("-1
    ");
        }
        return 0;
    }
  • 相关阅读:
    BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
    Xiaocms 去版权
    nodejs学习8:windows连接mongodb出现的错误解决办法
    gulp运行步骤
    电脑日常技巧:没有语言栏,怎么办???
    jquery中使用each遍历。
    一、Java基礎(二)
    一、Java基础(一)
    《JAVA编程思想》第四版 PDF
    TCP、UDP详解与抓包工具使用
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6748240.html
Copyright © 2020-2023  润新知