{ Runtime library for the graphomaton (c) 2006 Martin Mares } const MAXN = 100; var V, Vprev: array [1..MAXN] of vertex; E: array [1..MAXN, 1..deg] of MAXN; N: 0..MAXN; procedure read_in; var i, j, k: integer; begin read(N); for i:=1 to N do begin for j:=1 to deg do read(E[i,j]); read(V[i].x); end; for i:=1 to N do begin for j:=1 to deg do begin V[i].s[j] := @V[E[i,j]]; k := 1; while (k <= deg) and (E[E[i,j],k] <> i) do inc(k); if k > deg then begin writeln('Input inconsistent: no opposite edge for ', i, '#', j); halt(1); end; V[i].s[j] := @Vprev[E[i,j]]; V[i].p[j] := k; end; init(@V[i]); end; end; procedure dump_all; var i, j: integer; begin for i:=1 to N do begin write(i); { write(' ('); for j:=1 to deg do begin if j>1 then write(','); write(E[i,j]); end; write(')'); } write(#9, 'x=', V[i].x); dump(@V[i]); writeln(' stop=', ord(V[i].stop)); end; end; procedure iterate; var i, it, nstop: integer; begin; it := 0; writeln('### Initial configuration ###'); dump_all; repeat inc(it); nstop := 0; Vprev := V; for i := 1 to N do begin run(@V[i]); if V[i].stop then inc(nstop); end; writeln('### Iteration ', it, ' ###'); dump_all; until nstop = N; end; begin read_in; iterate; end.