Nazdar ľudia, potrebujem pomoc robím túto úlohu :
Rozvoz tovaru
Z novej centrály sa bude každý deň rozvážať tovar k zákazníkom. Keďže
už poznáte
doterajších stálych zákazníkov, chcete si ich aj naďalej udržať. Preto
vás zaujíma,
za aký najkratší čas viete dopraviť tovar k stálym zákazníkom.
Preprava tovaru nie je vôbec jednoduchá. Na každú zákazku potrebujete
špeciálne
upravený nákladný vlak, ktorý preváža obrovské kovové konštrukcie.
Zá-
roveň však využívate aj nákladné auto, ktoré je finančne výhodnejšie,
no dokáže
prepraviť iba menšie časti. Pri vybavovaní zákazky posielate z centrály
vždy oba
dopravné prostriedky v tom istom čase. Z dopravno-bezpečnostných dôvodov
však
oba cestujú inou trasou, nikdy sa nemôžu stretnúť v rovnakom čase v
rovnakom
meste a nikdy sa nemôžu ani zastaviť, až pokiaľ nedôjdu do cieľového
mesta, kde
sa nachádza zákazník. Oba prostriedky sa tak môžu stretnúť len v
centrále a v
meste zákazníka.
Vašou úlohou je vypočítať, za aký najkratší čas prepraví tovar k
zákazníkovi
dopravný prostriedok, ktorý príde neskôr.
Vstup
Prvý riadok vstupu obsahuje prirodzené číslo T (1 ≤ X ≤ 50) vyjadrujúce
počet
vstupov. Každý vstup začína dvoma číslami, N (2 ≤ N ≤ 400) – počet
miest a M –
počet železničných prepojení, ktoré spájajú dvojice miest (0 ≤ M ≤
N(N −1)/2).
Nasleduje M riadkov, kde na i-tom riadku sú uvedené dve čísla A a B, ktoré
vyjadrujú,
že existuje železnica spájajúca mesto A a B. Naopak cestou sú
prepojené
práve také všetky dvojice miest, ktoré nie sú prepojené železnicou.
Všetky uvedené
dvojice prepojených miest sú unikátne. Prvé mesto s indexom 1
predstavuje
centrálu a posledné mesto s indexom N predstavuje cieľové mesto zákazníka,
do
ktorého potrebujete tovar prepraviť. Môžete predpokladať, že oba dopravné
prostriedky
sa pohybujú rovnakou rýchlosťou a preprava medzi ľubovoľnou dvojicou
miest trvá presne 1 hodinu.
Výstup
Výstup pozostáva z T riadkov. Na každý riadok vypíšte koľko hodín bude
trvať,
kým k zákazníkovi dorazí neskorší dopravný prostriedok. Ak sa aspoň
jeden z
dopravných prostriedkov nevie prepraviť z centrály k zákazníkovi, vypíšte
namiesto
počtu hodín −1.
Tuto vám dám zdrojak:
Program HelloWorld(output);
var
X,M,N,a,b,i,j:Longint;
cesta:array[1..400,1..400] of Longint;
function najdi
(cislo:Longint):Longint;
var OK:boolean;
cas,p:Longint;
pom:array[1..400] of Longint;
begin
i:=1;
OK:=false;
cas:=0;
pom[1]:=1;
p:=2;
repeat
for j:= N downto i do
begin
if(cesta[i,N]=cislo) then
begin
cas:=cas+1;
OK:=true;
Break;
end;
if(i=1)and(j=1) then
begin
OK:=true;
cas:=-1;
Break;
end;
if(cesta[i,j]=cislo) then
begin
pom[p]:=i;
cesta[i,j]:=2;
i:=j;
cas:=cas+1;
p:=p+1;
Break;
end;
if(i=j)and(j<>1) then
begin
i:=pom[p-1];
p:=p-1;
cas:=cas-1;
Break;
end;
end;
until (OK=true);
najdi:=cas;
end;
begin
readln(X);
while(X>0) do
begin
X:=X-1;
readln(N,M);
for i:= 1 to M do
begin
readln(a,b);
cesta[a,b]:=1;
end;
a:=najdi(1);
b:=najdi(0);
if(a=-1)or(b=-1) then writeln('-1') elseif (a>b) then writeln(a) else writeln(b);
for i:= 1 to N do
begin
for j:= 1 to N do
begin
cesta[i,j]:=0;
end;
end;
end;
end.
Problém je v tom , že je to stále zle a ja už neviem v čom je problém
Prosím o nejakú radu
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.