В чем может быть проблема? Выдает "Частичное решение"

По заданной квадратной матрице 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. Не понимаю, зачем задавать вопросы, если даже не готовы слушать ответы?

→ Ссылка