eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Циркуляция

Циркуляция

Назовем \textit{циркуляцией} поток величины \textbf{0}. Дан ориентированный граф с нижними и верхними пропускными способностями, то есть для любых вершин \textbf{i} и \textbf{j} должно быть верно, что \textbf{l_ij} ≤ \textbf{f_ij} ≤ \textbf{c_ij}, где \textbf{l_ij} - нижняя граница, а \textbf{c_ij} - верхняя. Требуется найти циркуляцию в данном графе, удовлетворяющую данным ограничениям. \InputFile В первой строке входного файла \textbf{2} целых числа \textbf{N} и \textbf{M} (\textbf{1} ≤ \textbf{N} ≤ \textbf{200}, \textbf{0} ≤ \textbf{M} ≤ \textbf{15000}). Далее следуют \textbf{M} строк, описывающие ребра графа. Каждая строка содержит \textbf{4} целых положительных числа \textbf{i}, \textbf{j}, \textbf{l_ij} и \textbf{cij} (\textbf{0} ≤ \textbf{l_ij} ≤ \textbf{c_ij} ≤ \textbf{10^5}), что означает, что ребро ведет из вершины с номером \textbf{i} в вершину с номером \textbf{j} с нижней границей \textbf{l_ij} и верхней \textbf{c_ij}. Гарантируется, что если в графе есть ребро из \textbf{i} в \textbf{j}, то нет ребра из \textbf{j} в \textbf{i}. \OutputFile Если не существует циркуляции удовлетворяющей данным ограничения, выведите \textbf{NO}. Иначе на первой строке выведите \textbf{YES}. Далее в \textbf{M} строках должно содержаться по одному числу. В \textbf{i}-ой строке - величина потока по ребру на \textbf{i}-ой строке во входном файле. Напомним, что для любых \textbf{i} и \textbf{j} должно быть верно, что \textbf{l_ij} ≤ \textbf{f_ij} ≤ \textbf{c_ij}.
Лимит времени 2 секунды
Лимит использования памяти 64 MiB
Входные данные #1
4 6
1 2 1 2
2 3 1 2
3 4 1 2
4 1 1 2
1 3 1 2
4 2 1 2
Выходные данные #1
NO