最小費用最大流

裸題意:

一個網絡,每條邊有容量,也有單位流量的費用。

此時最大流可能有多種,求費用最小的最大流費用。

下面給出最常用的一種方法:

  1. 以費用爲邊長,用SPFA沿還可以增廣的邊找出一條從源點到匯點的最短路,並記錄路徑和這條路上的最小流量fmin 。若源匯點之間不連通就表示沒有增廣路了,當前費用就是最大流的最小費用。
  2. 然後增廣這條路,這條路的每條邊流量加fmin ,這條路的增廣費用就是fmindd 是最短路長度)。然後繼續步驟1

大致證明:

用費用最短路找的增廣路一定是當前同流量中費用最小的一條增廣路。

若最短路長度爲d ,這條增廣路流量爲f ,這條增廣路費用就是df ,此時其他增廣路若要流f 流量,費用一定大於df

最後以這種貪心思想找出來的最大流一定是最小費用的。

只是時間。。。

引用某大神的一句話:“當一某道題的正解是用網絡流,那這時網絡流的時間複雜度就是O(107) ,若不是網絡流,那它的時間複雜度就是O(109) 。”

一些費用流題目:

UVa1658codevs1227洛谷1251

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章