Я бы сказал, пройдите через каждую трубу и запишите максимальный проходящий через нее максимум, который должен быть наименьшим из его пропускной способности или суммы максимумов, входящих в нее. Тогда неограниченные просто берут общее количество, входящее в них (или, в самом начале, Integer.MAX_VALUE
). Или вы можете использовать bool
для отслеживания бесконечности. Или просто для удовольствия Double.POSITIVE_INFINITY
.
Обратите внимание, что если в каналах есть какие-либо циклы, возможно, вам придется циклически проходить и обновлять пару раз, пока не получите устойчивый ответ.
Edit: После того, как я немного посмотрел на проблему максимального потока, связанную в комментарии, и подумал об этом, я не уверен, что это правильный путь, так как не думаю, что это объясняет разделение тока между двумя исходящие трубы. Возможно, какой-то дальний родственник закона Ома, приспособленный для воды?