Avatar
Neaktivní uživatel:

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') else if (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

Odpovědět 4. února 22:53
Neaktivní uživatelský účet
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.

Zobrazeno 1 zpráv z 1.