Складні маршрути#3046

Складні маршрути

2 секунди
32 мегабайти
Складна

На честь прийдешньої Олімпіади вас запросили запропонувати велосипедні тренувальні маршрути для команди вашої країни. Тренувальний комітет прагне визначити маршрути між парами точок у різних місцях країни. Кожен маршрут повинен мати заданий рівень складності, що ґрунтується на крутизні його схилів.

Вам буде надано дорожню карту з даними про висоти. Кожне перехрестя, де перетинаються два чи більше шляхів, визначається своїми -, - та -координатами. Кожна дорога починається і закінчується на перехресті, є прямою та не перетинає інші дороги (тобто без мостів і тунелів). Рівень складності для проїзду по дорозі дорівнює , якщо дорога рівна або подолана у напрямку вниз. Для підйому (нерівної дороги), складність визначається як 100 \cdot \text{rise}/\text{run}, де — абсолютна зміна висоти, а — відстань між двома перехрестями у горизонтальній проекції на площину z=0. Зауважте: складність при спуску завжди дорівнює нулю.

Маршрут — це послідовність доріг, де наступна дорога починається від перехрестя, у якому завершилася попередня. Маршрут має рівень складності , якщо максимальна складність серед усіх його доріг дорівнює . Комітет також бажає, якщо між двома заданими точками існує маршрут із заданим рівнем складності, отримати маршрут із можливо найменшою загальною довжиною.

Нагадування: Функція підлоги означає перетворення до цілого числа відкиданням дробової частини.

Вхідні дані

Вхід містить кілька дорожніх карт. Опис кожної карти починається з двох невід'ємних цілих чисел та (розділених пробілом, кожне окремим рядком), які задають кількість перехресть і доріг відповідно (0 < N, M \leq 10000). Рядок із N = 0 та M = 0 означає кінець введення.

Кожен із наступних рядків містить по три цілі числа, розділених пробілами, що відповідають -, - та -координатам перехрестя (0 \leq x, y, z \leq 10000). Перехрестя нумеруються у порядку появи, починаючи з одиниці. Далі йдуть рядків, кожен з яких містить два цілі числа — номери перехресть, між якими пролягає дорога.

Нарешті, три цілі числа , , задають початкове перехрестя , кінцеве перехрестя та шуканий рівень складності маршруту (0 \leq d \leq 10). Дійсний тренувальний маршрут повинен містити принаймні одну дорогу з рівнем складності і жодної дороги з рівнем складності, що перевищує . Якщо потрібен замкнутий маршрут, то та вказують на одне і те саме перехрестя.

Вихідні дані

Для кожної карти доріг і запитаного маршруту виведіть в окремому рядку:

  1. довжину найкоротшого дійсного тренувального маршруту, округлену до однієї десяткової, або

  2. слово None, якщо такого маршруту не існує.

Нагадування: Округлення додатного числа до трьох знаків після десяткової

  • Якщо четверта цифра після десяткової менша за , округлене значення — це

  • Інакше — R.xxx + 0.001

Приклади: для результат має бути ; для допустимі як , так і .

Приклади

Приклад 1

Loading
Loading