Проверка матрица на транзитивность в С++
Сделал условие проверки матрицы на транзитивность. Но не уверен, правильно ли сделал:
#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";
}
Можете переделать под свое представление..