Cod sursa(job #115980)

Utilizator ionescu88alex ionescu ionescu88 Data 17 decembrie 2007 15:33:34
Problema Gather Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.99 kb
type triplu=record
      nr,cor,min:longint;
    end;
var fi,fo:text;
    n,m,k:integer;
    a,b,c,d,i,j,aux,pozi,min:longint;
    detinuti:array[1..15]of longint;
    coridor:array[1..1250,1..1250]of triplu;
begin
  assign(fi,'gather.in'); reset(fi);
  assign(fo,'gather.out'); rewrite(fo);
  read(fi,k,n,m);
  for i:=1 to k do
    readln(fi,detinuti[i]);
  for i:=1 to k-1 do
    for j:=i+1 to k do
      if detinuti[i]>detinuti[j] then
        begin
          aux:=detinuti[i];
          detinuti[i]:=detinuti[j];
          detinuti[j]:=aux;
        end;
  for i:=1 to m do
    begin
      read(fi,a,b,c,d);
      coridor[a,b].cor:=1; coridor[b,a].cor:=1;
      coridor[a,b].min:=c; coridor[b,a].min:=c;
      coridor[a,b].nr:=d;  coridor[b,a].nr:=d;
    end;
  pozi:=1; min:=0;
  for i:=1 to k do
    if coridor[pozi,detinuti[i]].cor=1 then
      begin min:=i*coridor[pozi,detinuti[i]].min+min; pozi:=detinuti[i]; end;
  writeln(fo,min);
  close(fi);
  close(fo);
end.