fork download
  1. program paradox;
  2. var n, i, j, count:integer;
  3. S: array[1..325] of string;
  4. A,B,SY: array [1..325] of char;
  5. lettere : array[1..26,1..26] of boolean;
  6. visited : array [1..26] of char;
  7. risposta: string;
  8. ciclo : boolean;
  9.  
  10. procedure DFS(u: Integer);
  11. var v: Integer;
  12. begin
  13. ciclo:=false;
  14. visited[u]:='2'; writeln ('u ',u, ' ');
  15. for v:=1 to 26 do if (lettere[u,v] = true) then begin if visited[v]='1' then begin writeln ('v ',v); DFS(v)end
  16. else begin writeln ('ciao ',v,' ',visited[v]); if visited[v]='2' then ciclo:=true; end; end;
  17.  
  18. visited[u]:='3';
  19.  
  20. writeln (visited[v]);
  21. writeln(ciclo);
  22. end;
  23.  
  24. begin
  25. readln(N);
  26. for i:=1 to N do readln(S[i]);
  27. for i:=1 to N do begin A[i]:=S[i][1]; SY[i]:=S[i][3]; B[i]:=S[i][5];end;
  28. for i:=1 to 26 do
  29. for j:=1 to 26 do lettere[i, j]:=false;
  30. for i:=1 to 26 do visited[i]:='1';
  31. ciclo := false;
  32. for i:=1 to N do
  33. begin
  34. if SY[i]='<' then lettere[ord(A[i])-96, ord(B[i])-96] := true
  35. else if SY[i]='>' then lettere[ord(B[i])-96, ord(A[i])-96] :=true;
  36. end;
  37. DFS(1);
  38. if ciclo=true then risposta:=':('
  39. else risposta:=':)';
  40. writeln(risposta);
  41. end.
  42.  
Success #stdin #stdout 0.01s 5320KB
stdin
5
a > f
b > c
a < d
d < c
f < b
stdout
u  1 
v  4
u  4 
v  3
u  3 
v  2
u  2 
1
FALSE
1
FALSE
1
FALSE
1
FALSE
:)