題意:n個點,m條無向邊,每條邊有乙個容量和擴容費用(容量擴大1的費用),2個詢問:(1)不擴容下的1~n最大流 (2)將最大流增加k的最小費用
強行湊出的網路流經典題麼 23333
對於第一問,裸跑最大流即可
第二問的建圖還是很不錯的,
一開始認為,應該重新建邊,容量為k,費用是給題目給的。
but,too young too ******,always *****
因為會出現問題:在殘留網路中仍有流量,這些流量擴到新的最大流裡是不需要費用的
所以,我們在第一問建圖時,費用設為0(解決了不需要費用的問題)
然後在跑完第一問後,再重新建邊 x -> y 容量為正無窮(表示這條邊可以一直擴容) 費用為給定費用
然後再跑費用流
注意:第一問的最大流為ans,要求增加k,但我們重現連新邊後所得的最大流 比 (ans+k)大,這肯定不是最優的(因為你擴了不用擴的)。為了保證第二問增加的流量為k,我們可以在1號或n號點加一條邊,容量為k 費用為0,用來限流,使增加的不超過k
注意對應陣列的範圍,mdzz,開小了改了好久
BZOJ 1834 網路擴容 最大流 費用流
對於第一問,直接求最大流。對於第二問,建源點s和匯點t,s連1容量為inf,費用為0的邊,n連t容量為最大流 k,費用為0的邊。這樣就把最大流限制為最多增加k了。限制需要求擴充的最小費用,原圖的邊多連一條容量為inf,費用為增容費用k的邊。跑一遍費用流即是答案。include include inc...
bzoj1834(網路流 費用流)
給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。求 1 在不擴容的情況下,1到n的最大流 2 將1到n的最大流增加k所需的最小擴容費用。第一問裸的網路流 第二問 新建乙個匯點,將n號點與匯點相連,容量為k,限制最多增大的流量 費用為0 將原先每一條邊都新...
BZOJ 1834 網路擴容 最大流 最小費用流
題目大意 給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。求 1 在不擴容的情況下,1到n的最大流 2 將1到n的最大流增加k所需的最小擴容費用。思路 第一問直接求費用流,第二問,在第一問的殘餘網路上,對於每條邊額外加上inf容量費用為w的邊,限制最大流...