Довольно часто попадаются задачи на нахождение максимального потока / минимального сечения. В этом случае используют алгоритмы Форда-Фалкерсона или Эдмондса-Карпа, иногда к этому прибавляется масштабирование, что ощутимо ускоряет дело. Самой сложной частью в такой задаче считается ее сведение к вычислению потока.
Но совсем недавно я наткнулся на задачу в архиве spoj'а FASTFLOW в которой требуется вычислить в очень маленькое время максимальный поток при больших входных данных. После написания решения на Java и получения TLE я переписал его на C++, но опять алгоритм Эдмондса-Карпа с масштабированием оказался бессилен. Никаких других методов я нигде не нашел, поэтому обращаюсь за помощью. Думаю этот вопрос будет интересен не только мне, так как обычно его не освещают слишком глубоко.
Заранее благодарен.
Но совсем недавно я наткнулся на задачу в архиве spoj'а FASTFLOW в которой требуется вычислить в очень маленькое время максимальный поток при больших входных данных. После написания решения на Java и получения TLE я переписал его на C++, но опять алгоритм Эдмондса-Карпа с масштабированием оказался бессилен. Никаких других методов я нигде не нашел, поэтому обращаюсь за помощью. Думаю этот вопрос будет интересен не только мне, так как обычно его не освещают слишком глубоко.
Заранее благодарен.
improved algorithm of Edmons-Karp, наверное, поможет
его описание есть на топкодере
Yes, Dinic solves FASTFLOW http://e-maxx.ru/algo/dinic
Проталкивание предпотока.
To solve maximum flow problems,SAP is a good algorithm with high speed and a short code.
Here is my implementation of Dinic's algorithm. I'm getting TLE. What optimization should be done? (Possibly, merging parallel edges?) Please help. (Any bug in my implementation?)
Why do you post your question in all flow-related topics? It only angers people and distracts them from your blogpost.
I'm so sorry. I had posted it before. But I didn't get any answers. So I thought of posting it in a flow related topic. I apologize.