В матрице смежности есть n ^ 2 записей, и вам нужна информация, которая есть во всех записях, чтобы решить проблему. (Вам нужны цифры 1, чтобы проверить, что правильные ребра существуют, и цифры 0, чтобы проверить, что задних ребер не существует.) Таким образом, поскольку вы должны прочитать как минимум N ^ 2 записей из матрицы, общая проблема должна занять хотя бы O (N ^ 2) раз.
Относительно попыток поиска в BFS: если ваш обход занимает O (n ^ 2) - что это и произойдет, из-за необходимости искать ребра в матрице смежности - тогда не имеет значения, является ли проверка на уровне ребра постоянной время, общий алгоритм все еще O (n ^ 2).
Еще один способ взглянуть на эту проблему: поскольку число ребер равно количеству возможных пар вершин, будет n * (n-1) / 2 ребер, что равно O (n ^ 2) , Ваш обход - O (V + E), то есть O (n + n ^ 2) и, следовательно, O (n ^ 2).
Поскольку наилучшим временем для этого алгоритма является O (n ^ 2), вы также можете просто перебрать верхнюю правую половину матрицы (выше диагонали) и проверить, что для каждого из этих элементов либо ) это 1, или б) его транспонированный эквивалент равен 1.