Date: Wed, 11 Dec 2002 20:21:21 +0100 From: elbandi_at_fbi.hu Subject: Beadandó Nevem : LAZAR Andras Feladat : gp1000.11 Feladatom eredménye: 236,227,191,202,174,167,223,200,259,186,201,246 176,217,201,241,235,219,149,197 Futási idő : 12.53 sec a 486 Dx2 (66Mhz)-en A program Borland Pascal 7.0-ban iródott: Program graff; Uses crt, dos; Type Tgraf=Array[0..3000] of Record Kezd:word; Veg:word; Suly:word; End; Var graf:Tgraf; db,j,i,k,max:integer; x:text; szom:Array[0..1000,0..13] of word; szomszed1:Array[0..1000] of byte; honnan:Array[0..1000] of word; Tav:Array[0..1000] of integer; pont: integer; o,p,mp,mp1,mp100,mp101: Word; Function Elhossz(m,n:integer):integer; Var ii:integer; sv:integer; Begin If m>n then Begin sv:=m; m:=n; n:=sv; End; ii:=0; While (Graf[ii].kezdn) do ii:=ii+1; Elhossz:=Graf[ii].suly; End; Begin GetTime(o,p,mp,mp100); Assign(x,'gp1000.11'); Reset(x); db:=0; While not Eof(x) do Begin Read(x,graf[db].kezd); Read(x,graf[db].veg); Read(x,graf[db].suly); db:=db+1; End; Close(x); db:=db-2; Clrscr; { For j:=0 to db do Writeln(j,' >> ',graf[j].kezd,' >> ',graf[j].veg,' >> ',graf[j].suly); } For j:=0 to 1000 do szomszed1[j]:=0; For j:=0 to db do Begin Inc (szomszed1[graf[j].kezd]); Inc (szomszed1[graf[j].veg]); End; For j:=0 to 1000 do szom[j,0]:=0; For j:=0 to db do Begin Inc(szom[graf[j].kezd,0]); szom[graf[j].kezd,szom[graf[j].kezd,0]]:=graf[j].veg; Inc(szom[graf[j].veg,0]); szom[graf[j].veg,szom[graf[j].veg,0]]:=graf[j].kezd; End; Writeln('Az algoritmus elindul...'); For i:=-1 to 1000 do Begin Tav[i]:=Maxint; End; pont:=0; Tav[pont]:=0; Repeat For j:=1 to szom[pont,0] do Begin i:=szom[pont,j]; If Tav[i]>-Tav[pont]+elhossz(pont,i) then Begin Tav[i]:=-Tav[pont]+elhossz (pont,i); Honnan[i]:=pont; End; End; pont:=-1; For k:=0 to 1000 do Begin If (Tav[k]>0) And (Tav[k]-1 then Tav[pont]:=-Tav[pont]; Until pont<0; Writeln('kesz van'); Assign(x,'Megold.txt'); Rewrite(x); For i:=1 to 20 do Writeln(x,i,'. pontba ', -Tav[i]); Close(x); GetTime(o,p,mp1,mp101); mp100:=mp101-mp100; mp:=mp1-mp; Writeln(mp,',',mp100,' sec'); Readln; End.