Проверка матрица на транзитивность в С++

Сделал условие проверки матрицы на транзитивность. Но не уверен, правильно ли сделал:

#include "Tran.h"
bool (check(int** matrix, int n))
{
  for (int i = 0; i < n; i++)
  {
   for (int j = i + 1; j < n; j++)
    {
     if (matrix[i][j])
      {
       for (int u = 0; u < n; u++)
        {
         if (i != u && j != u)
          {
           if ((matrix[i][u] && matrix[u][j] && !(matrix[i][j])))
            {
             return false;
            }

          }

        }

      }

    }

  }
 return true;
}

Ответы (1 шт):

Автор решения: Harry

Ну, я делал здесь так:

int main()
{
    int n;
    cin >> n;
    vector<vector<int>> m(n,vector<int>(n,0));
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
            cin >> m[i][j];

    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
        {
            if (i == j) continue;
            if (!m[i][j]) continue;
            for(int k = 0; k < n; ++k)
            {
                if (k == i || k == j) continue;
                if (m[j][k] == 0) continue;

                if (m[i][k] == 0) { cout << "NO\n"; return 0; }
            }
        }
    cout << "YES\n";
}

Можете переделать под свое представление..

→ Ссылка