step1 . Делаем топологическую сортировку вершин ориентированного графа.
step2 . Теперь проверьте, можем ли мы достичь всех вершин из первой вершины топологически отсортированных вершин на шаге 1.
Чтобы выполнить шаг 2, снова инициализируйте
массив обнаружил, что [i] ложно и выполняет dfs, начиная с первого узла топологически отсортированных вершин.
Если все вершины могут быть достигнуты, то у графа есть материнская вершина, а материнская вершина будет первой из топологически отсортированных вершин.
сложность времени:
шаг 1 занимает O(n + m)
, шаг 2 занимает O(n + m)
итого O(n+m) + O(n+m) = O(n+m)