В чем может быть проблема? Выдает "Частичное решение"
По заданной квадратной матрице n×n из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа.
Входные данные На вход программы поступает число n (1≤n≤100) – размер матрицы, а затем n строк по n чисел, каждое из которых равно 0 или 1, – сама матрица.
Выходные данные Выведите «YES», если приведенная матрица может быть матрицей смежности простого неориентированного графа, и «NO» в противном случае.
> Примеры входные данные 5 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 выходные данные YES
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int** mat = new int* [n];
for (int i = 0; i < n; i++)
{
mat[i] = new int[n];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> mat[i][j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (mat[i][j] != mat[j][i])
{
cout << "NO";
return 0;
}
}
}
cout << "YES";
for (int i = 0; i < n; i++)
{
delete[] mat[i];
}
delete[] mat;
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
У вас нет проверки на отсутствие петель.
Вот такое изменение -
for (int i = 0; i < n; i++)
{
if (mat[i][i])
{
cout << "NO";
return 0;
}
for (int j = 0; j < n; j++)
{
if (mat[i][j] != mat[j][i])
{
cout << "NO";
return 0;
}
}
}
и программа благополучно проходит все тесты здесь.
P.S. Не понимаю, зачем задавать вопросы, если даже не готовы слушать ответы?