• 洛谷_P1119_灾后重建


    题目大意:

    地震后,有N个受损的村庄,在任一一个村庄重建完成之前,其他村庄都不能到达这个村庄。

    给出N个村庄重建完成的时间和连通的情况。

    有Q个询问,问在时间T,A和B这两个村庄是否连通。

    若连通,则输出A和B的最短路径,否则输出-1。

    题解:

    因为保证询问的时间T是不递减,只需判断中转站k是否连通即可。

    代码:

     1 var
     2   n,m,Q:longint;
     3   t:array [0..2001] of longint;
     4   a:array [0..201,0..201] of longint;
     5 procedure init;
     6 var
     7   i,x,y,z:longint;
     8 begin
     9   fillchar(a,sizeof(a),63);
    10   fillchar(t,sizeof(t),63);
    11   readln(n,m);
    12   for i:=1 to n do
    13     begin
    14       read(t[i]);
    15       a[i,i]:=0;
    16     end;
    17   for i:=1 to m do
    18     begin
    19       readln(x,y,z);
    20       x:=x+1; y:=y+1;
    21       a[x,y]:=z; a[y,x]:=z;
    22     end;
    23 end;
    24 
    25 function min(o,p:longint):longint;
    26 begin
    27   if o<p then exit(o);
    28   exit(p);
    29 end;
    30 
    31 procedure main;
    32 var
    33   k,i,j,ii,x,y,tt:longint;
    34 begin
    35   readln(Q);
    36   k:=1;
    37   for ii:=1 to Q do
    38     begin
    39       readln(x,y,tt);
    40       x:=x+1; y:=y+1;
    41       while t[k]<=tt do
    42         begin
    43           for i:=1 to n do
    44             for j:=1 to n do
    45               a[i,j]:=min(a[i,j],a[i,k]+a[k,j]);
    46           inc(k);
    47         end;
    48       if (t[x]<=tt) and (t[y]<=tt) and (a[x,y]<>a[0,0]) then
    49         writeln(a[x,y]) else
    50         writeln('-1');
    51     end;
    52 end;
    53 
    54 begin
    55   init;
    56   main;
    57 end.
  • 相关阅读:
    vue实战(3):底部导航显示、搭建各模块静态页面、添加登录页页面与路由
    vue实战(2):初始化项目、搭建底部导航路由
    hexo
    移动端自适应
    vue过场动画
    获取 TypeScript
    TypeScript 与 JavaScript 的区别
    api封装使用
    vue学习
    dom的增删改
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9498436.html
Copyright © 2020-2023  润新知