Ctrl K

Маршруты со стоимостью AND

Сложная
В городе n перекрёстков с номерами от 0 до n - 1 и двусторонние дороги roads, где roads[i] = [u, v, w] — дорога между u и v с весом w. Между двумя перекрёстками может быть несколько дорог. Маршрут — это последовательность дорог, где каждая следующая начинается там, где закончилась предыдущая. По одной дороге и через один перекрёсток можно проходить сколько угодно раз. Стоимость маршрута — побитовое AND весов всех пройденных дорог. Для каждого запроса queries[j] = [s, t] найдите минимальную стоимость маршрута из s в t, а если добраться нельзя, ответ -1. Верните ответы в порядке запросов.
Пример 1
n=4, roads=[[0, 1, 6], [1, 2, 3], [2, 0, 7]], queries=[[0, 2], [1, 3]] → [2, -1]

Из 0 в 2 выгодно пройти по всем трём дорогам (0 → 1 → 2 → 0 → 2): 6 AND 3 AND 7 = 2. Перекрёсток 3 ни с чем не соединён, поэтому второй ответ -1.

Пример 2
n=5, roads=[[0, 1, 12], [3, 4, 5], [3, 4, 9]], queries=[[1, 0], [4, 3], [2, 4]] → [12, 1, -1]

Между 0 и 1 одна дорога весом 12. Между 3 и 4 две дороги, и маршрут может пройти по обеим: 5 AND 9 = 1. Перекрёсток 2 изолирован.

Ограничения
  • 2 ≤ n ≤ 10⁵
  • 0 ≤ len(roads) ≤ 10⁵
  • 0 ≤ u, v ≤ n - 1, u ≠ v
  • 0 ≤ w ≤ 10⁵
  • 1 ≤ len(queries) ≤ 10⁵
  • 0 ≤ s, t ≤ n - 1, s ≠ t
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКого вылечить первым СложнаяКого отключить от сети СложнаяУровни клеток по строкам и столбцам СложнаяПоездки на самокате с лимитом дороги СложнаяПротиворечивые отношения Сложная
загружаем Python…
Вход
n=4, roads=[[0, 1, 6], [1, 2, 3], [2, 0, 7]], queries=[[0, 2], [1, 3]]
Ожидается
[2, -1]

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