{ P-I-4 Grafomat Jakub Ruzicka ctete grafomat.txt } var x:0..2; { vstup } y:0..1 = 0; { vystup } z:0..3 = 0; { prosel pomocny signal ? pokud ano, odkud prisel ? (0 - neprisel, 1..3 - cislo mistni hrany odkud prisel)} i:1..3; { iteracni promenna } begin case x of 0:begin { vrchol bez vstupniho oznaceni } if (y = 0) then { nejsme oznaceni jako vrchol na nejkratsi ceste } begin if (z = 0) then { nepresel pres nas jeste ani pomocny singal } begin i:=1; while (i <= 3) AND (S[i].z = 0) do i:=i+1; if i <= 3 then z:=i; { najdeme-li oznaceneho souseda, zapiseme si jeho mistni hranu a nehledame dalsi } end else { vyhlizime y = 1 u vrcholu, ktere si od nas vzaly pomocny sigal } begin i:=1; while (i <= 3) AND NOT ( (S[i].y >= 1) AND (S[i].z = P[i]) ) do i:=i+1; { ma soused y = 1 a vzal si pomocny signal od nas ? } if i <= 3 then y:=1; end; end; stop; { vsechny x = 0 vrcholy vzdy souhlasi se zastavenim } end; 1:begin { vrchol oznaceny 1 } if z = 0 then z := 1; { vrchol vzdy vysila pomocny signal } i:=1; while (i <= 3) AND ( (S[i].y = 1 ) OR (S[i].x = 2) ) do i:=i+1; if i <= 3 then stop; { nejkratsi cesta je vyznacena, nebo jsou 1 a 2 hned vedle sebe - koncime } end; 2:begin { vrchol oznaceny 2 } if y<1 then y:=1; { vrchol je vzdy 1 } if z<1 then { jeste k nam nedosel pomocny signal ? } begin i:=3; while (i <= 3) AND (S[i].z = 0) do i:=i+1; { hledame souseda oznaceneho pomocnym signalem } if i <= 3 then z:=i; { najdeme-li oznaceneho souseda, delame, ze jsme oznaceni od nej } end else stop; { dosel, takze zastavujeme a cekame, az doje y = 1 na zacatek. } end; end; end.