Почти найкоротший шлях - зважений
Пошук найкоротшого шляху від початкової точки до кінцевої, з урахуванням заданого набору точок і довжин ребер, що їх з'єднують, — це вже добре відома задача. Вона стала частиною нашого повсякденного життя, оскільки програми для пошуку найкоротшого шляху широко використовуються сьогодні.
Більшість людей цінують ці застосунки, оскільки вони значно полегшують їхнє життя. А може й не завжди.
Зараз, коли майже кожен має доступ до пристроїв GPS-навігації, здатних розраховувати найкоротші шляхи, більшість маршрутів, що утворюють найкоротший шлях, стають повільнішими через інтенсивний рух. Оскільки більшість людей намагається слідувати одним і тим самим шляхом, більше не варто слідувати цим вказівкам.
Маючи це на увазі, ваш начальник просить вас розробити новий застосунок, доступ до якого матиме тільки він. Це заощадить йому час на зустрічі або якомусь терміновому заході. Програма повинна знаходити не найкоротший шлях, а майже найкоротший шлях. Майже найкоротший шлях — це такий найкоротший шлях від початкової точки до кінцевої, що жодне його ребро не належить жодному найкоротшому шляху між початковою і кінцевою точками.
На рисунку нижче представлена карта з колами — точками місцезнаходження, і стрілками — односторонніми маршрутами з вказаними довжинами. Початкова точка позначена як , а кінцева точка позначена як . Жирні лінії відносяться до найкоротшого шляху (в даному випадку є два найкоротші шляхи, кожен із сумарною довжиною ). Майже найкоротший шлях позначений пунктирними лініями (сумарна довжина ), оскільки жоден маршрут між двома послідовними точками не належить жодному найкоротшому шляху. Зверніть увагу, що може існувати більше однієї можливої відповіді, наприклад, якщо маршрут довжиною має довжину . Відповідь навіть може не існувати.
Вхідні дані
Складається з декількох тестів. Перший рядок кожного тесту містить два цілих числа і , що позначають відповідно кількість точок на карті і кількість існуючих односторонніх маршрутів, що з'єднують дві точки. Кожна точка позначається цілим числом від до . Другий рядок містить два цілих числа і , що позначають відповідно початкову і кінцеву точки .
Кожен з наступних рядків містить три цілих числа і , що вказують на існування одностороннього маршруту з в з відстанню . Існує не більше одного маршруту від точки до точки , але зверніть увагу, що існування маршруту від до не означає, що існує маршрут від до , і, якщо така дорога існує, вона може мати іншу довжину. Останній рядок містить два нулі і не обробляється.
Вихідні дані
Для кожного тесту виведіть один рядок, що містить , якщо неможливо відповідати вимогам, або ціле число, що представляє довжину знайденого майже найкоротшого шляху.