Cod sursa(job #10070)

Utilizator bigsarpeadrian bigsarpe Data 27 ianuarie 2007 20:52:55
Problema Amenzi Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.2 kb
const maxtimp=3500;maxn=150;maxtest=8000;
type pnod=^Tnod;tnod=record nod,timp:longint;next:Pnod;end;
var t:Text;
   V,Kapa:Array[0..maxtimp,0..maxn]of longint;
   Pa,Pb:array[0..maxtest]of longint;
   G:array[0..maxn]of pnod;cur:Pnod;
   noucost,noutimp,nouoras,timp,oras,i,n,j,m,k,p,a,b,c:longint;
begin
   for i:=0 to maxtimp do for j:=0 to maxn do V[i,j]:=-1;v[0,1]:=0;
   assign(t,'amenzi.in');reset(T);readln(t,n,m,k,p);
   for i:=1 to M do
   begin
      readln(t,a,b,c);
      new(cur);cur^.nod:=a;cur^.timp:=c;cur^.next:=G[b];G[b]:=cur;
      new(cur);cur^.nod:=b;cur^.timp:=c;cur^.next:=G[a];G[a]:=cur;
   end;
   for i:=1 to K do begin readln(t,a,b,c);inc(kapa[b,a],c);end;
   for i:=1 to P do readln(t,Pa[i],Pb[i]);close(t);
   for timp:=0 to maxtimp do for oras:=1 to N do if V[timp,oras]>=0then
   begin
      cur:=G[oras];
      while cur<>nil do
      begin
         noutimp:=cur^.timp+timp;nouoras:=cur^.nod;
         noucost:=V[timp,oras]+Kapa[noutimp,nouoras];
         if V[noutimp,nouoras]<noucost then V[noutimp,nouoras]:=noucost;
         cur:=cur^.next;
      end;
   end;
   assign(t,'amenzi.out');rewrite(T);
   for i:=1 to P do writeln(t,V[Pb[i],Pa[i]]);close(T);
end.