Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
PROGRAM Epitkezes;
CONST
maxn = 200;
VAR
inputFile, outputFile: STRING;
eloz: ARRAY [1..maxn, 1..maxn] OF BOOLEAN;
munka: ARRAY [1..maxn] OF BYTE;
nap: ARRAY [1..maxn] OF BYTE;
torolt: ARRAY [1..maxn] OF BOOLEAN;
N: BYTE;
PROCEDURE Alap;
VAR
i, j: BYTE;
BEGIN
FOR i:= 1 TO maxn DO
BEGIN
torolt[i]:= FALSE;
FOR j:= 1 TO maxn DO
BEGIN
eloz[i, j]:= FALSE;
END;
END;
END;
PROCEDURE Betolt;
VAR
Tx: Text;
K, T: INTEGER;
i: INTEGER;
a, b: BYTE;
BEGIN
Assign(Tx, inputFile);
Reset(Tx);
ReadLn(Tx, N, K, T);
a := 0;
FOR i:= 1 TO K DO
BEGIN
Read(Tx, b);
IF a <> 0 THEN eloz[a, b]:= TRUE;
a := b;
END;
FOR i:= 1 TO T DO
BEGIN
ReadLn(Tx, a, b);
eloz[a, b]:= TRUE;
END;
Close(Tx);
END;
PROCEDURE MegoldasKi(M: BYTE);
VAR
T: Text;
i, j: BYTE;
BEGIN
Assign(T, outputFile);
Rewrite(T);
WriteLn(T, M);
j:= 1;
FOR i:= 1 TO M DO
BEGIN
WHILE (j <= N) AND (nap[j] = i) DO
BEGIN
Write(T, munka[j], ' ');
INC(j);
END;
WriteLn(T);
END;
Close(T);
END;
PROCEDURE Torol(i: BYTE);
VAR
j: BYTE;
BEGIN
torolt[i] := TRUE;
FOR j:= 1 TO N DO
BEGIN
eloz[i, j]:= FALSE;
eloz[j, i]:= FALSE;
END;
END;
FUNCTION Forras(i: BYTE): BOOLEAN;
VAR
j: BYTE;
BEGIN
j:= 1;
WHILE (j <= N) AND (eloz[j, i] = FALSE) DO INC(j);
Forras:= j > N;
END;
PROCEDURE Megold;
VAR
i, M, kesz: BYTE;
voltuj: BOOLEAN;
BEGIN
M:= 0; kesz:= 0;
REPEAT
voltuj:= FALSE; INC(M);
FOR i:= 1 TO N DO
BEGIN
IF (torolt[i] = FALSE) AND (Forras(i)) THEN
BEGIN
voltuj:= TRUE;
INC(kesz);
nap[kesz]:= M; munka[kesz]:= i;
END;
END;
IF voltuj THEN
BEGIN
i:= kesz;
WHILE (i > 0) AND (nap[i] = nap[kesz]) DO
BEGIN
Torol(munka[i]);
DEC(i);
END;
END;
UNTIL voltuj = FALSE;
DEC(M);
IF kesz < N THEN M:= 0;
MegoldasKi(M);
END;
PROCEDURE Foprog;
VAR
id: CHAR;
BEGIN
Write('azonosito: '); ReadLn(id);
inputFile:= 'epitkez.be'+id;
outputFile:= 'epitkez.k'+id;
Alap;
Betolt;
Megold;
END;
BEGIN
Foprog;
END.