Pagini recente » Cod sursa (job #2030979) | Cod sursa (job #773144) | Istoria paginii runda/simulare_izho_1/clasament | Cod sursa (job #2005920) | Cod sursa (job #205895)
Cod sursa(job #205895)
var a,b:array[0..8000]of longint;
c,d:array[0..8000]of real;
n,i,j,k,m,w:longint;
c1,c2,c3,ma:real;
f:text;
begin
assign(f,'ciclu.in');
reset(f);
read(f,n,m);
for i:=1 to m do
begin
read(f,a[i],b[i],c[i]);
if c[i]>ma then ma:=c[i];
end;
close(f);
for i:=1 to n do
begin
a[m+i]:=0;
b[m+i]:=i;
c[m+i]:=0;
end;
m:=m+n;
c1:=0;
c2:=ma;
while c2-c1>0.01 do
begin
c3:=(c1+c2)/2;
for i:=1 to m-n do
c[i]:=c[i]-c3;
for i:=1 to n do
d[i]:=200000000;
w:=0;
for i:=1 to n do
for j:=1 to m do
if d[b[j]]>d[a[j]]+c[j] then d[b[j]]:=d[a[j]]+c[j];
for j:=1 to m do
if d[b[j]]>d[a[j]]+c[j] then w:=1;
if w=1 then c2:=c3
else c1:=c3;
for i:=1 to m-n do
c[i]:=c[i]+c3;
end;
assign(f,'ciclu.out');
rewrite(f);
writeln(f,c1:0:2);
close(f);
end.