Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Защищенное соединение

(Время: 3 сек. Память: 64 Мб Сложность: 72%)

В свете недавних новостей о прослушке каналов связи, два непримиримых интернет-гиганта Урагании «Laim.UR» и «Xenda» решили подписать соглашение об установлении защищенного канала связи между дата-центрами друг друга. В Урагании N городов, но, к сожалению, ни в одном городе нет дата-центров обоих гигантов. Поэтому для формирования защищенного канала придется прокладывать междугородние линии связи.

Специалисты компаний определили M пар городов, которые можно соединить, проложив сегмент канала связи, и оценили стоимость создания такого сегмента для каждой из этих пар.

Результирующий канал может состоять из нескольких сегментов. Он должен начинаться в одном из городов, где находится дата-центр первой компании, может проходить через промежуточные города и должен заканчиваться в городе, где находится дата-центр второй компании.

Теперь необходимо определить минимальную стоимость защищенного канала, соединяющего два дата-центра компаний.

Входные данные

В первой строке входного файла находятся целые числа N и M (2 ≤ N ≤ 5 000, 1 ≤ M ≤ 105) – количество городов и количество пар городов, которые можно соединить сегментом канала связи. Во второй строке находятся N целых чисел Ai (0 ≤ Ai ≤ 2). Если Ai = 0, то в i-м городе нет дата-центра ни одного из гигантов. Если Ai = 1, то в i-м городе есть дата-центр «Laim.UR», а если Ai = 2, то в i-м городе находится дата-центр «Xenda». Гарантируется, что среди этих чисел есть как минимум одна единица и одна двойка. В каждой из следующих M строк находится по три целых числа – Si, Ti и Ci , которые означают, что города Si и Ti (1 ≤ Si , Ti ≤ N, Si ≠ Ti) можно соединить сегментом канала связи стоимостью Ci (1 ≤ Ci ≤ 105). Каждую пару городов можно соединить не более чем одним сегментом канала.

Выходные данные

Если соединить защищенным каналом связи два дата-центра разных интернет-гигантов возможно, то выведите в выходной файл OUTPUT.TXT три числа: X, Y и D, означающие, что между городами X и Y возможно провести канал связи суммарной стоимостью D. В городе X должен находиться дата-центр «Laim.UR», в городе Y – дата-центр «Xenda». Если существует несколько оптимальных ответов, выведите любой. Если провести искомый канал невозможно, выведите −1.

Примеры

INPUT.TXTOUTPUT.TXT
16 7
1 0 1 2 2 0
1 3 3
1 2 4
2 3 3
2 4 2
1 6 5
3 5 6
5 6 1
3 4 5
24 2
1 0 0 2
1 3 3
2 4 2
-1

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 ЕГЭ по информатике
 Тренировочные олимпиады
 Введение
 Целочисленная арифметика
 Алгоритмы сортировки
 Длинная арифметика
 C++ Standard Template Library
 Динамическое программирование
 Комбинаторика
 Вычислительная геометрия
 Строки
 Структуры данных
 Теория графов - 1
 Теория графов - 2
 Алгоритм Флойда
 Алгоритм Форда-Беллмана
 Алгоритм Дейкстры
 Минимальный каркас
 Эйлеров цикл, конденсация
 Паросочетания
 A. Алгоритм Дейкстры
 B. Алгоритм Дейкстры - 2
 C. Дейкстра за O(M log N)
 D. Заправки
 E. Автобусы
 F. Транспортировка
 G. Химическая тревога
 H. Защищенное соединение

Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru



музыкальные произведения