比赛 10101115 评测结果 WWWWWWTTTT
题目名称 最小密度路径 最终得分 0
用户昵称 Achilles 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-15 09:18:50
显示代码纯文本
program path;
var
  n,m,q,i,j,k,l1,l2,a,b,c:longint;
  t:double;
  tab:array[1..50,1..50]of longint;
  hx:array[1..50,1..50]of boolean;
  ans:array[1..50,1..50,1..1000]of longint;
begin
  assign(input,'path.in');
  assign(output,'path.out');
  reset(input);
  rewrite(output);
  readln(n,m);
  fillchar(tab,sizeof(tab),0);
  fillchar(ans,sizeof(ans),0);
  fillchar(hx,sizeof(hx),false);
  for i:=1 to m do
  begin
    readln(a,b,c);
    tab[a,b]:=c;
    hx[a,b]:=true;
    ans[a,b,1]:=c;
  end;
  for k:=1 to n do
    for i:=1 to n do
      for j:=1 to n do
        if (hx[i,k])and(hx[k,j]) then begin
          hx[i,j]:=true;
          for l1:=1 to m do
            for l2:=1 to m-l1 do
              if (ans[i,k,l1]<>0)and(ans[k,j,l2]<>0) then begin
                if ans[i,j,l1+l2]=0 then begin
                  ans[i,j,l1+l2]:=ans[i,k,l1]+ans[k,j,l2];
                end
                else
                  if ans[i,k,l1]+ans[k,j,l2]<ans[i,j,l1+l2] then
                    ans[i,j,l1+l2]:=ans[i,k,l1]+ans[k,j,l2];
              end;
        end;
  readln(q);
  for i:=1 to q do
  begin
    readln(a,b);
    t:=1.7e308;
    for j:=1 to m do
      if ans[a,b,j]<>0 then
        if ans[a,b,j]/j<t then t:=ans[a,b,j]/j;
    writeln(t:0:3);
  end;
  close(input);
  close(output);
end.