zoukankan      html  css  js  c++  java
  • 洛谷P1119 灾后重建

    传送门

    题目大意:点被破坏,t[i]为第i个点修好的时间,且t[1]<t[2]<t[3]..

    若干询问,按时间排序,询问第t时刻,u,v的最短路径长度。

    题解:floyed

    根据时间加入点去松弛其他点

    代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define N 210
    #define inf 0x7fff
    using namespace std;
    int n,m,q;
    int t[N];
    int map[N][N];
    int main()
    {
        cin>>n>>m;
        for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        map[i][j]=inf*(i!=j);
        for (int i = 0; i < n; ++i)
            scanf("%d",&t[i]);
        t[n]=inf;
        for (int i = 0; i < m; ++i)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            map[x][y]=z;
            map[y][x]=z;
        }
       scanf("%d",&q);
        int u=0;
        for (int i = 0; i < q; ++i)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            while(t[u]<=z)
            {
                for(int i=0;i<n;i++)
                    for(int j=0;j<n;j++)
                        map[i][j]=min(map[i][j],map[i][u]+map[u][j]);
                u++;
            }
            if(t[x]>z||t[y]>z||map[x][y]==inf)
                puts("-1");
            else
                printf("%d
    ",map[x][y]);
        }
        return 0;
    }
    AC
  • 相关阅读:
    alpha冲刺1/4
    第二次作业
    第一次作业
    第一次个人作业
    第10组 Beta版本演示
    第10组 Beta冲刺(4/4)
    第10组 Beta冲刺(3/4)
    第10组 Beta冲刺(2/4)
    第10组 Beta冲刺(1/4)
    第10组 Alpha冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/zzyh/p/7711784.html
Copyright © 2011-2022 走看看