Ctrl K

Открытые комнаты от холла

Средняя
В здании n комнат с номерами от 0 до n - 1. Комнаты соединены n - 1 двусторонними коридорами так, что из любой комнаты можно дойти до любой другой ровно одним путём (то есть план здания — дерево). Коридор corridors[i] = [a, b] соединяет комнаты a и b. Некоторые комнаты заперты, их номера перечислены в locked. Заходить в запертую комнату нельзя — даже чтобы пройти сквозь неё. Комната 0 — это холл, она никогда не заперта. Верните, сколько комнат можно обойти, начав из холла (сам холл тоже считается).
Пример 1
n=6, corridors=[[0, 1], [1, 2], [1, 3], [0, 4], [4, 5]], locked=[4] → 4

Из холла 0 можно пройти в 1, а оттуда в 2 и 3. Комната 4 заперта, поэтому до 5 не добраться. Всего 4 комнаты вместе с холлом.

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

Все соседи холла заперты — доступен только сам холл.

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

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