L. Проверка потенциалов
Потенциалы — способ избавиться от отрицательных весов. Если каждой вершине приписать число и заменить вес ребра на
то вес любого пути из в изменится ровно на — одинаково для всех путей. Значит, кратчайшие пути останутся кратчайшими. А если все новые веса окажутся неотрицательными, по такому графу можно пускать Дейкстру.
На этом стоит алгоритм Джонсона: посчитать потенциалы Фордом — Беллманом из фиктивной вершины, пересчитать веса и дальше запускать Дейкстру сколько угодно раз.
Здесь задача проще: потенциалы уже даны, надо лишь проверить, что все новые веса неотрицательны.
Проверка занимает один проход по рёбрам. Обратите внимание на переполнение: и потенциалы по модулю до , так что может выйти за пределы 32-битного типа.
Формат ввода
Первая строка содержит числа () и ().
Вторая строка — чисел ().
Далее идут строк с рёбрами: начало, конец и вес ().
Формат вывода
Одно слово: YES, если все пересчитанные веса неотрицательны, и NO иначе.
Примеры
3 3 0 5 9 1 2 5 2 3 4 1 3 9
YES
2 1 0 0 1 2 -1
NO