上次「參觀」華工校賽,g題「a mincost—maxflow problem」 引發了對費用流中負權迴路的思考
這題目是單純的模板題,不想再提了~~
下面說一下消圈:
有負權迴路的圖是不可能球出最短路的,所以增廣演算法不能發揮用處,那我們可不可以通過修改權值從而消去負邊??
答案當然是肯定的:(以下操作的前提是網路已經建好,並且初始流量是0)
c (容量) f (流量) cost(費用)
(1)先使所有負邊滿流(注意殘留網路的變化),計算每個節點的盈餘流(設e [i] >0 為流入大於流出)
(2)建立乙個額外的 s『 和 t』
對於每個節點i(e[i] >0) 連一條邊 s『 --> i (c = e[i], cost = 0)
對於每個節點j(e[j] <0) 連一條邊 j -- > t』 (c = -e[j], cost = 0)
(3)求解關於源 s『 和匯 t』 的最小費用最大流(得到乙個原網路的可行流——負環流)
(4)對於原來網路中的 s 和 t 求解最小費用最大流
理解的關鍵是殘留網路的變化
**先空著
費用流處理負圈的方法
以最小費用最大流為例,我們可以通過退流來消除費用為負數的邊。具體過程 不妨設有一條從 u 到 v 的容量為 c 費用為 d 的邊 d 0 先強制滿流,把答案加上 c times 之後,從 u 到 t s 到 v 各連一條容量為 c 費用為0的邊,用來調整流量。這兩條邊要使用手段強制滿流。最後,連一條...
poj 2175 費用流 消圈
這道題如果直接費用流會超時。題目只是讓我們判斷是否是最好的情況,我們只需要找到更好的一種情況即可,不需要求最好的。也就是說按照最小費用流的做法,我們只需要在殘餘網路還能找到乙個負圈的即可。這是充分必要條件,如果達到最優解,就沒有負圈了。所以我們按照題意建立圖還有殘餘網路。之後判斷圖中是否存在乙個負圈...
poj 2175 費用流判負環 消環
題意 給出n棟房子位置和每棟房子裡面的人數,m個避難所位置和每個避難所可容納人數。然後給出乙個方案,判斷該方案是否最優,如果不是求出乙個更優的方案。思路 很容易想到用最小費用流求出最優時間,在與原方案花費時間對比判斷原方案是否最優。但是這種方法會超時的。放棄該思路。看看題目沒要求要最優解,而是得到乙...