TGViewer
C++ Academy C++ Academy @cpluspluc · 15.5K subscribers
Post #1567 1.34K
Minimum-Cost Maximum-Flow всего в ~110 строках C++

Хороший компактный пример одного из самых полезных алгоритмов на графах.

Задача MCMF: провести через сеть максимально возможный поток и одновременно сделать его стоимость минимальной.

В этой реализации:

- residual graph хранит оставшиеся возможности для потока
- SPFA каждый раз ищет самый дешёвый увеличивающий путь
- после поиска определяется bottleneck - сколько потока реально можно протолкнуть по найденному пути
- поток отправляется по пути
- процесс повторяется, пока путь из источника в сток больше найти нельзя

Особенно красивый трюк - обратные рёбра.

Прямое и обратное ребро добавляются подряд, поэтому получить индекс пары можно через:


id ^ 1

Если id чётный, id ^ 1 даст следующее нечётное ребро. Если нечётный - вернёт предыдущее чётное.

MCMF пригодится там, где мало просто найти максимальный поток и у каждого решения есть цена:

• назначение сотрудников на задачи
• логистика
• маршрутизация
• matching с разной стоимостью
• распределение ресурсов
• расписания

Компактный пример того, как residual network, shortest path и greedy augmentation собираются в один мощный алгоритм.
  • 🔥 6
  • ❤ 3
More from @cpluspluc
  1. Sep 28, 2026C23 сделал enum в C заметно удобнее для низкоуровневого кода. Раньше базовый тип перечисле…
  2. Sep 25, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
  3. Sep 24, 2026photo post
  4. Sep 24, 2026`🤖 В SourceCraft появилась команда цифровых разработчиков Агентам можно назначать задачи…
  5. Sep 23, 2026😂 Собеседование на C++ прошло успешно HR: у вас есть опыт с C++? Я: конечно, отлично знаю…
  6. Sep 22, 2026Физически корректный ray tracer всего в 99 строках C++ smallpt от Kevin Beason - один из с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →