Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int zwrotna(int R[100][100],int n)
  5. {
  6. int i;
  7. for (i=0; i<n; i++)
  8. if (R[i][i] == 0) return 0;
  9. return 1;
  10. }
  11.  
  12. int przeciwzwrotna(int R[100][100],int n)
  13. {
  14. for (int i=0; i<n; i++)
  15. if (R[i][i]) return 0;
  16. return 1;
  17. }
  18.  
  19. int symetryczna(int R[100][100],int n)
  20. {
  21. for (int i=0; i<n-1; i++)
  22. for (int j=i+1; j<n; j++)
  23. if (R[i][j] != R[j][i]) return 0;
  24. return 1;
  25. }
  26.  
  27. int antysymetryczna(int R[100][100],int n)
  28. {
  29. for (int i=0; i<n-1; i++)
  30. for (int j=i+1; j<n; j++)
  31. if (R[i][j] && R[j][i]) return 0;
  32. return 1;
  33. }
  34.  
  35. int przechodnia(int R[100][100], int n)
  36. {
  37. int B[100][100];
  38.  
  39. for (int i=0; i<n; i++)
  40. for (int j=0; j<n; j++)
  41. {
  42. B[i][j] = 0;
  43. for (int k=0; k<n; k++)
  44. B[i][j] = B[i][j] || (R[i][k]&&R[k][j]);
  45. }
  46.  
  47. for (int i=0; i<n; i++)
  48. for (int j=0; j<n; j++)
  49. if (R[i][j] <B[i][j]) return 0;
  50. return 1;
  51. }
  52.  
  53. int spojna(int R[100][100],int n)
  54. {
  55. for (int i=0; i<n-1; i++)
  56. for (int j=i+1; j<n; j++)
  57. if (!(R[i][j] || R[j][i])) return 0;
  58. return 1;
  59. }
  60.  
  61. int main() {
  62.  
  63. int tab[100][100], a, b, max=0, x=0;
  64. for (int i=0; i<100; i++)
  65. for (int j=0; j<100; j++)
  66. tab[i][j] = 0;
  67.  
  68. while (cin >> a >> b)
  69. {
  70. tab[a][b] = 1;
  71. if (a > max) max=a;
  72. if (b > max) max=b;
  73. }
  74. max++;
  75.  
  76. if (zwrotna(tab,max)) {cout<<"Z "; x=1;}
  77. if (przeciwzwrotna(tab,max)) {cout<< "PZ "; x=1;}
  78. if (symetryczna(tab,max)) {cout<< "S "; x=1;}
  79. if (antysymetryczna(tab,max)) {cout<< "AS "; x=1;}
  80. if (przechodnia(tab,max)) {cout<< "P "; x=1;}
  81. if (spojna(tab,max)) {cout<< "SP "; x=1;}
  82. if (!x) {cout<< "X"; return 0;}
  83. cout<< endl;
  84. x = 0;
  85. if (zwrotna(tab,max) && symetryczna(tab,max) && przechodnia(tab,max)) {cout<< "RR "; x=1;}
  86. if (zwrotna(tab,max) && przechodnia(tab,max) && antysymetryczna(tab,max) && spojna(tab,max)) {cout<< "RPL"; x=1;}
  87. else if (zwrotna(tab,max) && przechodnia(tab,max) && antysymetryczna(tab,max)) {cout<< "RPCz"; x=1;}
  88.  
  89. if (!x) {cout<< "X"; return 0;}
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement