Ctrl K

Пути ровно с одним простым

Сложная
Дано дерево из n вершин с номерами от 1 до n. Список links длины n - 1 задаёт его рёбра: links[i] = [u, v] соединяет вершины u и v. Возьмём две разные вершины a и b и единственный путь между ними в дереве (концы входят в путь). Путь подходит, если среди номеров его вершин ровно одно простое число. Верните количество подходящих путей. Пути a–b и b–a — это один и тот же путь, считать его нужно один раз.
Пример 1
n=4, links=[[1, 2], [2, 3], [3, 4]] → 2

Простые номера — 2 и 3. Ровно одно простое число лежит только на путях 1–2 и 3–4; на остальных путях их либо ноль, либо два.

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

Подходят пути 1–2, 1–3, 1–5 и пути от 4 до 2, 3 и 5 через центр 1 — всего 6.

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

В дереве одна вершина, путей между двумя разными вершинами нет.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • len(links) = n − 1
  • 1 ≤ u, v ≤ n
  • Рёбра образуют дерево
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлижайший взаимно простой предок СложнаяСамый тяжёлый путь в дереве СложнаяСуммарные расстояния в дереве дорог СложнаяМинимум охранников на дереве СложнаяСамое тяжёлое поддерево поиска Сложная
загружаем Python…
Вход
n=4, links=[[1, 2], [2, 3], [3, 4]]
Ожидается
2

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