Ctrl K

Иерархия по парам родства

Сложная
В архиве компании сохранился только список пар links. Каждая пара [a, b] (где a < b) означает, что в оргструктуре один из этих сотрудников — начальник другого, прямой или через несколько уровней. Структура — дерево с одним корнем, у каждого сотрудника, кроме корня, ровно один непосредственный начальник; подчинённых может быть сколько угодно. В структуре участвуют ровно те сотрудники, номера которых встречаются в links. Пара записана в списке тогда и только тогда, когда один из двух сотрудников стоит выше другого по цепочке подчинения. Две структуры различаются, если хотя бы у одного сотрудника разные непосредственные начальники. Верните: - 0, если ни одной подходящей структуры нет; - 1, если она ровно одна; - 2, если подходящих структур больше одной.
Пример 1
links=[[1, 4], [4, 7], [1, 7], [1, 9], [4, 8], [1, 8]] → 1

Подходит только одна структура: 1 — корень с подчинёнными 4 и 9, а у 4 подчинённые 7 и 8. Сотрудник 1 связан со всеми, 4 — со всеми, кроме 9.

Пример 2
links=[[2, 5], [3, 5], [2, 3]] → 2

Все трое связаны друг с другом, значит, это цепочка, и порядок в ней любой: например, 2 → 3 → 5 или 5 → 2 → 3.

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

Корень должен быть связан со всеми, а здесь таких людей нет.

Ограничения
  • 1 ≤ len(links) ≤ 10⁵
  • 1 ≤ a < b ≤ 500 для каждой пары [a, b]
  • Пары в links не повторяются
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСуммарные расстояния в дереве дорог СложнаяЖук бродит по дереву СложнаяПорядок постройки комнат СложнаяПуть в дереве без одинаковых соседей СложнаяМаршруты между равными вершинами Сложная
загружаем Python…
Вход
links=[[1, 4], [4, 7], [1, 7], [1, 9], [4, 8], [1, 8]]
Ожидается
1

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