比赛 20110727 评测结果 AAAAAAAAA
题目名称 道路重建 最终得分 100
用户昵称 老虎小飞 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2011-07-27 12:12:09
显示代码纯文本
const
  mm=200000000;
var
map:array[0..100,0..100]of int64;
n,m,i,j,x,y,k:longint;

function min(a,b:longint):longint;
begin
    if a>b then min:=b
    else min:=a;
end;

begin
    assign(input,'rebuild.in');reset(input);
    assign(output,'rebuild.out');rewrite(output);
    read(n,m);
    for i:=1 to n do
        for j:=1 to n do  map[i,j]:=mm;
    for i:=1 to m do begin
        read(x,y);
        read(map[x,y]);
        map[y,x]:=map[x,y];
    end;
    read(m);
    for i:=1 to m do begin
        read(x,y);
        if map[x,y]>0 then begin
            map[x,y]:=-map[x,y];
            map[y,x]:=-map[y,x];
        end;
    end;
    for i:=1 to n do
       for j:=1 to n do  begin
          if map[i,j]<>mm then begin
              if map[i,j]>=0 then map[i,j]:=0
              else map[i,j]:=-map[i,j];
          end;
          if i=j then map[i,j]:=0;
       end;
    for k:=1 to n do
       for i:=1 to n do
          for j:=1 to n do begin
             if map[i,j]>map[i,k]+map[k,j] then begin
             map[i,j]:=map[i,k]+map[k,j];
             end;
          end;
    read(x,y);
    writeln(map[x,y]);
    close(input);close(output);
end.