Help me!!!
Posted by
gc007 20 Oct 2002 07:24
const max=900;
var
way:array[1..max,1..31]of record
s:integer;
no:integer;
end;
map:array[1..max]of integer;
n,m,before,x:integer;
procedure zl;
var i,j,code,k,l,p,j1:integer;
t:text;
c:char;
begin
fillchar(way,sizeof(way),0);
fillchar(map,sizeof(map),0);
assign(t,'');reset(t);
readln(t,n);
m:=1;before:=1;
for l:=1 to n do
begin
readln(t,x);
i:=1;
for p:=1 to x do
begin
read(t,j);
while j<>0 do
begin
if j<>0 then begin
read(t,j1);
inc(map[m-before+j]);
k:=map[m-before+j];
way[m-before+j,k].s:=j1;
way[m-before+j,k].no:=m+i;
end;
read(t,j);
end;
inc(i);
readln(t);
end;
if l<>n then readln(t,c);
m:=m+x;
before:=x;
end;
close(t);
end;
procedure gc;
var i,j:integer;
ok:array[1..max]of longint;
yes:array[1..max]of boolean;
begin
fillchar(ok,sizeof(ok),0);
fillchar(yes,sizeof(yes),true);
for i:=1 to m do
for j:=1 to map[i] do
if (ok[i]+way[i,j].s<ok[way[i,j].no])
or(yes[way[i,j].no]) then begin ok[way[i,j].no]:=ok[i]+way
[i,j].s;
yes[way[i,j].no]:=false;end;
x:=m;
for i:=m-before+1 to m-1 do
if ok[i]<=ok[x] then x:=i;
writeln(ok[x]);
end;
begin
zl;
gc;
end.