Одному таксисту приснился красочный сон. Во сне он живет и работает в некотором городе, где абсолютно все улицы с односторонним движением. Эти улицы устроены так, что невозможно проехать с какого-либо перекрестка так, чтобы вернуться обратно на этот же перекресток, то есть в дорожной сети города нет циклов.
Таким образом, если с перекрестка А можно попасть по направлению движения улиц на перекресток В, то люди вызывают такси, иначе их везет специальный муниципальный подземный транспорт за бесплатно.
В связи с такими странными на наш взгляд правилами, таксистам в этом городе разрешено законом везти пассажира по любому маршруту, не нарушающему направления движения. Все в этом городе привыкли к такой ситуации и абсолютно спокойно относятся к тому, что таксисты везут их самым длинным путем. Само собой, заработок таксиста за одну поездку прямо пропорционален длине поездки, для упрощения будем считать, что стоимость одного километра поездки составляет ровно один рубль.
Схема дорог города задана. Перекрестки города пронумерованы числами от 1 до п. Наш таксист в своем сне находится на перекрестке номер S. Напишите программу, которая подскажет ему, сколько он максимально сможет заработать, когда ему придет заказ от клиента. Так как он не знает куда попросит его везти клиент, нужно для каждого перекрестка от 1 до и указать максимальную стоимость добраться до этого перекрестка из пункта S на такси.
Если по правилам на такси добраться из пункта S до какого-то перекрестка нельзя, вывести -1.
Формат ввода
Дорожная сеть задана следующим образом: в первой строке находятся два числа через пробел и и т — число перекрестков и число улиц в городе. 2 ≤ n, m ≤ 2 * 70.
В следующих т строках задана очередная односторонняя улица в виде трех чисел 4, В. d через пробел, где А начало улицы, В — конец улицы и d — ей длина. 1 ≤ A, B ≤n, 7 ≤ d ≤ 10.
Гарантируется, что в этой дорожной сети нет циклов. Некоторые пары перекрестков могут быть соединены двумя и более односторонними улицами. Дорожная сеть может быть не плоской за счет мостов и тоннелей.
В последней строке ввода содержится номер стартового перекрестка S. 1 ≤ S ≤n.
Формат вывода
Вывести и чисел в одну строку через пробел. і-е число обозначает длину самого длинного пути с перекрестка номер S до перекрестка номер і. Если до перекрестка номер і от S нельзя
доехать, не нарушая правила движения, вывести -1.
Таким образом, если с перекрестка А можно попасть по направлению движения улиц на перекресток В, то люди вызывают такси, иначе их везет специальный муниципальный подземный транспорт за бесплатно.
В связи с такими странными на наш взгляд правилами, таксистам в этом городе разрешено законом везти пассажира по любому маршруту, не нарушающему направления движения. Все в этом городе привыкли к такой ситуации и абсолютно спокойно относятся к тому, что таксисты везут их самым длинным путем. Само собой, заработок таксиста за одну поездку прямо пропорционален длине поездки, для упрощения будем считать, что стоимость одного километра поездки составляет ровно один рубль.
Схема дорог города задана. Перекрестки города пронумерованы числами от 1 до п. Наш таксист в своем сне находится на перекрестке номер S. Напишите программу, которая подскажет ему, сколько он максимально сможет заработать, когда ему придет заказ от клиента. Так как он не знает куда попросит его везти клиент, нужно для каждого перекрестка от 1 до и указать максимальную стоимость добраться до этого перекрестка из пункта S на такси.
Если по правилам на такси добраться из пункта S до какого-то перекрестка нельзя, вывести -1.
Формат ввода
Дорожная сеть задана следующим образом: в первой строке находятся два числа через пробел и и т — число перекрестков и число улиц в городе. 2 ≤ n, m ≤ 2 * 70.
В следующих т строках задана очередная односторонняя улица в виде трех чисел 4, В. d через пробел, где А начало улицы, В — конец улицы и d — ей длина. 1 ≤ A, B ≤n, 7 ≤ d ≤ 10.
Гарантируется, что в этой дорожной сети нет циклов. Некоторые пары перекрестков могут быть соединены двумя и более односторонними улицами. Дорожная сеть может быть не плоской за счет мостов и тоннелей.
В последней строке ввода содержится номер стартового перекрестка S. 1 ≤ S ≤n.
Формат вывода
Вывести и чисел в одну строку через пробел. і-е число обозначает длину самого длинного пути с перекрестка номер S до перекрестка номер і. Если до перекрестка номер і от S нельзя
доехать, не нарушая правила движения, вывести -1.