for (int i = 0; i < n; i++) {
cout << setw(w) << A[i];
for (int j = 0; j < n; j++)
cout << setw(w) << R[i][j];
cout << endl;
}
}
void checkProperties(const vector<vector<int>>& R) {
int n = R.size();
bool reflexive = true;
bool antiReflexive = true;
bool symmetric = true;
bool antiSymmetric = true;
bool transitive = true;
// рефлексивность
for (int i = 0; i < n; i++) {
if (!R[i][i]) reflexive = false;
if (R[i][i]) antiReflexive = false;
}
// симметрия
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (R[i][j] != R[j][i])
symmetric = false;
if (i != j && R[i][j] && R[j][i])
antiSymmetric = false;
}
}
// транзитивность
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (R[i][j])
for (int k = 0; k < n; k++)
if (R[j][k] && !R[i][k])
transitive = false;