EduBrick

D. Семнадцать стульев

2000 мс · 64 МБ · всё или ничего

Дана матрица стоимостей проезда между городами. Начав в городе 1, нужно побывать в каждом городе ровно один раз. Найдите наименьшую суммарную стоимость и сам порядок посещения.

Нуль в матрице означает, что дороги нет, а не что проезд бесплатный.

Формат ввода

В первой строке NN (1≤N≤171 \le N \le 17). В каждой из следующих NN строк — NN неотрицательных чисел aija_{ij} (0≤aij≤1000 \le a_{ij} \le 100). Если aij>0a_{ij} > 0, проезд из ii в jj стоит aija_{ij}; если aij=0a_{ij} = 0, проехать напрямую нельзя.

Формат вывода

Если обойти все города можно, в первой строке выведите наименьшую суммарную стоимость, а во второй — NN номеров городов в порядке посещения (первый обязан быть 1). Если порядков несколько, выведите любой.

Если обойти все города нельзя, выведите −1-1.

Примеры

ввод
3
0 3 2
3 0 6
2 6 0
вывод
8
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.