zoukankan      html  css  js  c++  java
  • pku3615 Cow Hurdles

    给一个n个顶点的图(怎么最近的随笔都拿这句话开头^_^),Q条询问,(x,y),查询从x到y的路径上的最大边的最小值。(Q<=40000)

    最大最小问题99%都是二分答案,这道题却偏偏是那1%.

    用floyd,最后的关键语句变成f[i,j]=min(f[i,j],max(f[i,k],f[k,j]))即可。算法执行后f[i,j]就是问题(i,j)的答案。

    View Code
     1 program pku3615(input,output);
    2 var
    3 f : array[0..400,0..400] of longint;
    4 n,m : longint;
    5 q : longint;
    6 function min(aa,bb :longint ):longint;
    7 begin
    8 if aa<bb then
    9 exit(aa);
    10 exit(bb);
    11 end; { min }
    12 function max(aa,bb :longint ):longint;
    13 begin
    14 if aa>bb then
    15 exit(aa);
    16 exit(bb);
    17 end; { max }
    18 procedure init;
    19 var
    20 i,j : longint;
    21 xx,yy,ww : longint;
    22 begin
    23 fillchar(f,sizeof(f),0);
    24 for i:=1 to 300 do
    25 for j:=1 to 300 do
    26 if i<>j then
    27 f[i,j]:=maxlongint>>1;
    28 readln(n,m,q);
    29 for i:=1 to m do
    30 begin
    31 readln(xx,yy,ww);
    32 f[xx,yy]:=min(f[xx,yy],ww);
    33 end;
    34 end; { init }
    35 procedure main;
    36 var
    37 i,j,k : longint;
    38 begin
    39 for k:=1 to n do
    40 for i:=1 to n do
    41 if (i<>k) then
    42 for j:=1 to n do
    43 if (i<>j)and(j<>k) then
    44 f[i,j]:=min(f[i,j],max(f[i,k],f[k,j]));
    45 end; { main }
    46 procedure print;
    47 var
    48 i : longint;
    49 xx,yy : longint;
    50 begin
    51 for i:=1 to q do
    52 begin
    53 readln(xx,yy);
    54 if f[xx,yy]<maxlongint>>1 then
    55 writeln(f[xx,yy])
    56 else
    57 writeln(-1);
    58 end;
    59 end; { print }
    60 begin
    61 init;
    62 main;
    63 print;
    64 end.



  • 相关阅读:
    分享微云普通用户不限速下载方法
    PS基础之移动工具和分布对齐
    操作系统的概念、功能和目标
    又拍云+PicGo搭建图床教程
    05 数组
    04 循环结构
    02 数据类型_变量_运算符_表达式
    03 流程控制
    05 方法_递归
    win7下使用telnet的方法
  • 原文地址:https://www.cnblogs.com/neverforget/p/2409598.html
Copyright © 2011-2022 走看看