ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Разделы > 114. Остовные деревья > задача:


Макс и охрана дорог

Задачи раздела

• Макс и охрана дорог

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Макс и охрана дорог
Макс и охрана дорог
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Макс играет в стратегическую компьютерную игру, посвящённую жизни средневекового королевства. Во владениях Макса находятся $$$N$$$ городов, между которыми проложены $$$M$$$ двусторонних дорог. Одну и ту же пару городов могут соединять несколько дорог, кроме того, дорога может начинаться и заканчиваться в одном и том же городе.

К несчастью, путешествовать по дорогам небезопасно — в окрестностях могут появиться разбойники. Чтобы укрепить свою власть и сделать существование королевства благополучным, Макс собирается нанять охрану для некоторых дорог.

В королевстве есть две гильдии рыцарей — «Ruby Rapiers» и «Sapphire Sabers». Как нетрудно догадаться, в качестве оплаты первая из них принимает исключительно рубины, а вторая — только сапфиры. Для справки, один рубин на местном рынке стоит $$$C_R$$$ золотых, а один сапфир — $$$C_S$$$ золотых.

Мастера гильдий присвоили каждой дороге рубиновый и сапфировый рейтинг. Если Макс заплатит гильдии «Ruby Rapiers» $$$X$$$ рубинов, то взамен рыцари этой гильдии будут охранять все дороги, рубиновый рейтинг которых не превосходит $$$X$$$. Аналогично, если Макс заплатит гильдии «Sapphire Sabers» $$$Y$$$ сапфиров, то взамен рыцари этой гильдии будут охранять все дороги, сапфировый рейтинг которых не превосходит $$$Y$$$.

Макс хочет добиться того, чтобы от каждого города существовал путь до любого другого, проходящий только по охраняемым дорогам (при этом охрану каждой отдельной дороги может осуществлять любая из гильдий или обе одновременно). С другой стороны, Макс стремится потратить как можно меньше золотых на покупку необходимых рубинов и сапфиров.

Помогите Максу узнать, сколько золота ему придётся потратить, чтобы нанять охрану для дорог.

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

Первая строка содержит целые числа $$$N$$$ и $$$M$$$ ($$$2 \le N \le 1000$$$, $$$0 \le M \le 10^5$$$) — соответственно количество городов и дорог.

Вторая строка содержит целые числа $$$C_R$$$ и $$$C_S$$$ ($$$1 \le C_R, C_S \le 10^6$$$) — соответственно стоимости одного рубина и одного сапфира.

Следующие $$$M$$$ строк описывают дороги. Каждая из них содержит целые числа $$$A_i$$$, $$$B_i$$$, $$$R_i$$$, $$$S_i$$$ ($$$1 \le A_i, B_i \le N$$$, $$$1 \le R_i, S_i \le 10^6$$$) — соответственно номера городов, которые соединяет дорога, рубиновый рейтинг дороги и сапфировый рейтинг дороги.

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

Выведите одно целое число — минимальное количество золотых, за которое Макс сможет купить достаточное количество рубинов и сапфиров, чтобы нанять охрану для дорог.

Если у Макса не получится сделать так, чтобы между любой парой городов существовал путь по охраняемым дорогам, выведите -1.

Примеры

Входные данные
3 3
2 1
1 2 10 15
1 2 4 20
1 3 5 1
Выходные данные
9
Входные данные
5 8
5 6
4 3 2 7
5 4 2 9
2 3 2 1
1 5 3 2
2 3 8 6
4 4 6 7
2 1 2 9
1 2 2 4
Выходные данные
10

Для отправки решений необходимо выполнить вход.

www.contester.ru