Pagini recente » Cod sursa (job #2315808) | Cod sursa (job #309202) | Cod sursa (job #1168623) | Cod sursa (job #2864250) | Cod sursa (job #1429763)
program valuta;
type graf=array[1..100,1..100] of real;
const inf=32000.00;
var G:graf;
lg,pred:array[1..100] of integer;
vmax:array[1..100] of real;
cd:array[1..10000] of integer;
viz:array[1..100] of 0..1;
n,m,s,d:integer;
f:text;
procedure citire();
var i,j,k:integer;
f:text;
begin
assign(f,'valuta.in'); reset(f);
readln(f,n,m,s,d);
for k:=1 to m do
readln(f,i,j,G[i,j]);
close(f);
end;
procedure BF();
var st,sf,i,prec:integer;
begin
for i:=1 to n do
vmax[i]:=-inf;
vmax[s]:=1;
viz[s]:=1;
sf:=1;
st:=1;
cd[st]:=s;
while st<=sf do
begin
prec:=cd[st];
viz[prec]:=0;
for i:=1 to n do
if (G[prec,i]>0)and(vmax[i]<vmax[prec]*G[prec,i]) then
begin
vmax[i]:=vmax[prec]*G[prec,i];
lg[i]:=lg[prec]+1;
pred[i]:=prec;
if viz[i]=0 then
begin
sf:=sf+1;
cd[sf]:=i;
viz[i]:=1;
end;
end;
st:=st+1;
end;
end;
procedure drum(i:integer);
begin
if (i<>0)and(i<>s) then
begin
drum(pred[i]);
write(f,i,' ');
end;
end;
procedure afiseazaSol();
begin
writeln(f,lg[d]-1);
drum(pred[d]);
end;
begin
citire();
assign(f,'valuta.out'); rewrite(f);
BF();
afiseazaSol();
close(f);
end.