Загрузка данных


    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;