有上下界的網路流

2021-06-26 06:12:27 字數 1058 閱讀 7056

1.無匯源有上下界最大流

以前寫的最大流預設的下界為0,而這裡的下界卻不為0,所以我們要進行再構造讓每條邊的下界為0,這樣做是為了方便處理。對於每根管子有乙個上界容量up和乙個下界容量low,我們讓這根管子的容量下界變為0,上界為up-low。可是這樣做了的話流量就不守恆了,為了再次滿足流量守恆,即每個節點"入流=出流」,我們增設乙個超級源點st和乙個超級終點sd。我們開設乙個陣列du來記錄每個節點的流量情況。

du[i]=in[i](i節點所有入流下界之和)-out[i](i節點所有出流下界之和)。

當du[i]大於0的時候,st到i連一條流量為du[i]的邊。

當du[i]小於0的時候,i到sd連一條流量為-du[i]的邊。

對每條邊(u,v),容量為 up-low  ;

最後對(st,sd)求一次最大流即可,當所有附加邊全部滿流時(即maxflow==所有du>0之和),有可行解。

可行解是殘留網路中的流量加上原網路的下界  ;

2.有匯源有上下界最大流

du[i]=in[i](i節點所有入流下界之和)-out[i](i節點所有出流下界之和)。

當du[i]大於0的時候,st到i連一條流量為du[i]的邊。

當du[i]小於0的時候,i到sd連一條流量為-du[i]的邊。

對每條邊(u,v),容量為 up-low  ;

匯點t,到源點s連邊,容量為 無窮大 ;

最後對(st,sd)求一次最大流即可,當所有附加邊全部滿流時(即maxflow==所有du>0之和),有可行解。

可行解是殘留網路中的流量加上原網路的下界  ;

3..有匯源有上下界最小流

1、du[i]表示i節點的入流之和與出流之和的差。 

2、增設超級源點st和超級匯點sd,連(st,du[i](為正)),(-du[i](為負),sd)。 

3、做一次maxflow(sd,st)。

4、源點(sd)和起點(st)連一條容量為oo的邊。

5、再做一次maxflow(sd,st)。

6、當且僅當所有附加弧滿載時有可行流,最後答案為flow[(sd->st)^1],st到sd最大流就是sd到st最小流。

有上下界網路流

前言 下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看liu runda。注 為了方便,下面所有的 x,y,l,r 都表示一條從x連向y,流量下界為l,流量上界為r的邊。問題簡述 給出乙個有向圖,每條邊有流量上下界,沒有源點和匯點,要求找到一種流的方法,使得每個點...

有上下界的網路流

有上下界的網路流 這幾天看了周源的 一種簡易的方法求解流量有上下界的網路中網路流問題 並完成了 sgu 194 zoj 2314 reactor cooling,sgu 176 flow construction 和hoj 2135 poj 2396 budget三道題。作為周源文章中提到的求解上下...

有上下界的網路流

有上下界的網路流請戳這裡 hzwer.com 首先s向每天連 0,day 的邊,每一天與拍照的妹子連 l,r 的邊,每個女孩和匯連 g,oo 的邊 對於有源和匯的上下界網路流,只要t到s連一條 0,inf 的邊,那麼原圖成為乙個無源點匯點的迴圈流圖,那麼新建ss和tt,向每個點連邊 即每一點的入流為...