Создание вершин для каждого учащегося и каждой школы. Нарисуйте грань вместимостью 1 от каждого учащегося в каждой школе, которую они могут посещать в соответствии с вашим ограничением расстояния. Создайте исходную вершину с ребрами для каждого ученика с вместимостью 1. Создайте вершину-приемник с ребрами, приходящими из каждой школы, с емкостями, равными максимальной вместимости каждой школы.
Выполнение стандартного алгоритма максимального потока подойдет как можно большему числу учащихся к школам. Конечно, не каждому учащемуся гарантировано ходить в школу, учитывая ограничения.
Это, по сути, модификация стандартного алгоритма согласования двухстороннего максимума. Основное различие заключается в том, что вместимость раковин превышает 1, что позволяет сопоставить нескольких учеников со школой.