Ctrl K

Стартовые точки графа

Средняя
Дан ориентированный граф без циклов: n вершин с номерами от 0 до n - 1 и список стрелок links, где links[i] = [a, b] означает стрелку из a в b. Найдите самый маленький набор вершин, из которого по стрелкам можно дойти до всех вершин графа (каждая вершина набора считается достижимой из самой себя). Такой набор всегда единственный. Вершины можно вернуть в любом порядке.
Пример 1
n=5, links=[[0, 2], [1, 2], [2, 3], [2, 4]] → [0, 1]

В 0 и 1 не ведёт ни одна стрелка, значит, без них не обойтись; из них достижимы и 2, 3, 4.

Пример 2
n=4, links=[[3, 0], [0, 1], [1, 2]] → [3]

Все задачи цепочкой достижимы из 3.

Пример 3
n=3, links=[[0, 1]] → [0, 2]

Узел 2 ни с чем не связан, его приходится брать отдельно.

Ограничения
  • 2 ≤ n ≤ 10⁵
  • 1 ≤ len(links) ≤ min(10⁵, n · (n - 1) / 2)
  • 0 ≤ a, b < n, a ≠ b
  • Все стрелки различны
  • В графе нет циклов
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок сборки модулей СредняяОчередь на курсы СредняяСкладываются ли связи в дерево СредняяЛучшие корни дерева СредняяСколько изолированных групп в сети Средняя
загружаем Python…
Вход
n=5, links=[[0, 2], [1, 2], [2, 3], [2, 4]]
Ожидается
[0, 1]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 70 тестов на сервере, включая скрытые.