zoukankan      html  css  js  c++  java
  • [luoguP1119] 灾后重建(Floyd)

    传送门

    基于Floyd的动态规划原理,我们可以只用进行一次Floyd。

    而题目给出的限制条件相当于给Floyd加了时间限制而已。

    还是得靠对Floyd的理解。

    ——代码

     1 #include <cstdio>
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 const int MAXN = 201, INF = 23333333;
     7 int n, m, q;
     8 int t[MAXN], dis[MAXN][MAXN], qx[50001], qy[50001], qt[50001];
     9 
    10 int main()
    11 {
    12     int i, j, k = 0, x, y, l, z;
    13     scanf("%d %d", &n, &m);
    14     for(i = 0; i < n; i++) scanf("%d", &t[i]);
    15     t[n] = INF;
    16     for(i = 0; i < n; i++)
    17         for(j = 0; j < n; j++)
    18             dis[i][j] = INF * (i != j);
    19     for(i = 1; i <= m; i++)
    20     {
    21         scanf("%d %d %d", &x, &y, &z);
    22         dis[x][y] = dis[y][x] = z;
    23     }
    24     scanf("%d", &q);
    25     for(i = 1; i <= q; i++) scanf("%d %d %d", &qx[i], &qy[i], &qt[i]);
    26     for(l = 1; l <= q; l++)
    27     {
    28         while(t[k] <= qt[l])
    29         {
    30             for(i = 0; i < n; i++)
    31                 for(j = 0; j < n; j++)
    32                     dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
    33             k++;
    34         }
    35         if(t[qx[l]] > qt[l] || t[qy[l]] > qt[l] || dis[qx[l]][qy[l]] == INF) printf("-1
    ");
    36         else printf("%d
    ", dis[qx[l]][qy[l]]);
    37     }
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    Design Pattern: Gof
    ZT --- extern "C"用法详解 2010-08-21 19:14:12
    OCR
    Linux strace命令
    wireshark esp
    https://sourceware.org/gdb/onlinedocs/gdb/Forks.html
    12306网上买火车票选择上中下铺的方法
    gdb调试有fork的程序
    named piped tcp proxy
    bash 提示用户输入 choice
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6813104.html
Copyright © 2011-2022 走看看