 COLLECT | Описание Когда Макс Крейзи закончил финансовый колледж, он стал управляющим городского банка. Уже с первых дней работы Макс столкнулся с одной неразрешимой для него проблемой. В стране, где живет Макс, есть N городов. Некоторые из них связанны двусторонними дорогами, которые пересекаются только в городах. Раз в месяц инкассаторы Макса должны доставить деньги в K сберкасс. Все K сберкасс находятся в различных городах. Пока банк Макса небогат и имеет всего одну машину для перевозки денег. Задание Вам необходимо помочь Максу составить маршрут, который, начинается в городе L (в этом городе находится банк Макса), проходит по всем K городам, где находятся нужные сберкассы, и заканчивается также в городе L. Этот маршрут должен иметь минимальную длину (длиной маршрута назовем сумму длин всех дорог, входящих в этот маршрут). Входные данные В первой строке входного файла COLLECT.IN записаны через пробел три числа: N, M и K, где N - общее количество городов в стране, M - общее количество двусторонних дорог, K - количество сберкасс которые должны посетить инкассаторы (без учета города L). Во второй строке через пробел идут K чисел - номера городов, где находятся сберкассы. Следующие M строк содержат описание дорог. В каждой строке описывается одна дорога в виде X, Y и S (разделенные пробелом), где X,Y - номера городов, связанные дорогой, и S - длина этой дороги. В последней строке дано число L - номер города, где находится банк Макса. Выходные данные Единственная строка выходного файла COLLECT.OUT должна содержать набор чисел - номеров городов искомого маршрута в порядке обхода. Эти числа должны быть разделены одиночными пробелами. В случае, когда такого маршрута не существует, выходной файл должен содержать одно слово "NO". Ограничения: на используемую память: 16Mb 1<N<=100 0<M<=N(N-1)/2 0<K<18,K<N 0<S<=50000 1<=L,X,Y<=N Все входные данные - натуральные числа Например: COLLECT.IN 4 6 3 2 4 3 1 2 10 2 4 3 1 3 5 1 4 4 3 2 7 4 3 8 COLLECT.OUT 1 3 2 4 1 COLLECT.IN 6 9 2 3 4 1 3 24 1 2 10 2 6 5 2 5 6 3 5 7 3 4 16 4 5 9 4 6 8 5 6 4 1 COLLECT.OUT 1 2 6 4 3 5 2 1
|
|---|