n городов с номерами от 0 до n - 1 и двусторонние дороги roads[i] = [a, b, w] между городами a и b. Если w > 0, это длина готовой дороги, и менять её нельзя. Если w = -1, дорога на ремонте и её длину предстоит назначить вам: целое число от 1 до 2·10⁹. Длина 2·10⁹ означает, что дорога по сути закрыта.
Назначьте длины так, чтобы кратчайшее расстояние от города start до города finish стало ровно distance. Подходящих вариантов обычно много, поэтому нужен вполне определённый:
1. Возьмите наименьшее k ≥ 0, при котором цели можно добиться, держа закрытыми все ремонтируемые дороги, кроме первых k по порядку в списке.
2. Из этих k дорог первые k - 1 получают длину 1, а k-я — ту единственную длину, при которой расстояние становится ровно distance. Остальные ремонтируемые дороги получают 2·10⁹.
Верните список всех дорог в исходном порядке, с уже назначенными длинами. Если добиться расстояния distance нельзя, верните пустой список.n=4, roads=[[0, 1, -1], [1, 3, -1], [0, 2, 3], [2, 3, 4]], start=0, finish=3, distance=5 → [[0, 1, 1], [1, 3, 4], [0, 2, 3], [2, 3, 4]]
Без ремонтируемых дорог путь 0 → 2 → 3 длиной 7 — длиннее 5. Открыть одну дорогу 0–1 мало: до 3 из 1 не добраться. Открываем первые две: дорога 0–1 получает длину 1, а 1–3 — наименьшую длину 4, при которой путь 0 → 1 → 3 равен ровно 5.
n=3, roads=[[0, 1, 2], [1, 2, -1], [0, 2, 3]], start=0, finish=2, distance=4 → []
Готовая дорога 0–2 уже даёт расстояние 3 < 4, а ремонт его не удлинит — ответ пустой.
n=3, roads=[[0, 1, -1], [1, 2, 6], [0, 2, 5]], start=0, finish=2, distance=5 → [[0, 1, 2000000000], [1, 2, 6], [0, 2, 5]]
Расстояние уже равно 5, поэтому k = 0: ремонтируемая дорога остаётся закрытой и получает длину 2·10⁹.
n ≤ 100roads) ≤ n·(n − 1)/2roads[i] = [a, b, w], 0 ≤ a, b < n, a ≠ bw = -1 или 1 ≤ w ≤ 10⁷start, finish < n, start ≠ finishdistance ≤ 10⁹n=4, roads=[[0, 1, -1], [1, 3, -1], [0, 2, 3], [2, 3, 4]], start=0, finish=3, distance=5
[[0, 1, 1], [1, 3, 4], [0, 2, 3], [2, 3, 4]]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 80 тестов на сервере, включая скрытые.