Codeforces Round 200 (Div. 1) |
---|
Закончено |
Безумный ученый Майк устроился на работу. Его задача — управлять системой насосных станций для перекачки воды.
Система состоит из n насосных станций, которые пронумерованы целыми числами от 1 до n. Некоторые пары станций соединены двунаправленными трубами, по которым может течь вода в том или другом направлении (но одновременно только в одном). Для каждой трубы задана пропускная способность — наибольшее количество литров воды, которое может через нее протекать в течение одного часа. Каждая насосная станция может перекачивать входящую воду из одних станций в другие станции по трубам при условии, что за один час общее входящее в эту станцию количество литров воды равняется общему исходящему из этой станции количеству литров воды.
В обязанности Майка входит перекачивание воды между станциями. Из станции a в станцию b по трубам (возможно, через другие станции) в течение одного часа можно пустить какое-то количество литров воды согласно правилам, описанным выше. В течение этого времени вода из других станций не может втекать в станцию a, и не может вытекать из станции b, при том из станции a может вытекать любое количество воды, и в станцию b может втекать любое количество воды. Если из станции a за час в общем было выкачано x литров воды, то Майк получает к зарплате x бублей.
Чтобы получить зарплату, Майк по контракту должен работать n - 1 дней. В первый день он выбирает две станции v1 и v2, и в течение одного часа перекачивает определённое количество воды из v1 в v2. Далее в i-тый день Майк выбирает до этого ни разу не выбранную станцию vi + 1, и в течение одного часа перекачивает определенное количество воды из станции vi в станцию vi + 1. При этом количество перекачиваемой воды в i-тый день не зависит от количества перекачиваемой воды в (i - 1)-ый день.
Для своих проектов Майку нужно заработать как можно больше бублей. Помогите Майку найти такую перестановку номеров станций v1, v2, ..., vn, при которой Майк может заработать наибольшую возможную зарплату.
В первой строке входных данных через пробел записаны два целых числа n и m (2 ≤ n ≤ 200, 1 ≤ m ≤ 1000) — количество станций и количество труб в системе, соответственно. В i-той из следующих m строк через пробелы записаны три числа ai, bi и ci (1 ≤ ai, bi ≤ n, ai ≠ bi, 1 ≤ ci ≤ 100) — номера станций, которое соединяет i-тая труба и пропускная способность трубы, соответственно. Гарантируется, что любые две станции соединяет не более чем одна труба и между любыми двумя станциями существует путь по трубам.
В первой строке выведите одно целое число — наибольшее значение зарплаты, которую может получить Майк. В второй строке через пробелы выведите перестановку из n чисел от 1 до n — номера станций последовательности v1, v2, ..., vn. Если существует несколько ответов, выведите любой.
6 11
1 2 10
1 6 8
2 3 4
2 5 2
2 6 3
3 4 5
3 5 4
3 6 2
4 5 7
4 6 2
5 6 3
77
6 2 1 5 3 4
Название |
---|