剛剛學了有上下界的網路流問題,總結一下。
大概可以分為4種:
1、無源匯的可行流
2、有源匯的可行流
3、有源匯的最大流
4、有源匯的最小流
無源匯的可行流
想像一條水迴圈系統,無源匯的可行流就是流量在整張圖里迴圈,每乙個節點都滿足流量守恆,沒有源點和匯點這樣的特殊點。
但是,在這個問題中,每條邊都有乙個容量下限bi和乙個容量上限ci。上限好理解,就是普通最大流中的東西,但下限怎麼處理?
想象,如果在這張流網路滿足每條邊的流量都在【bi,ci】內,那麼對於每個節點,流經它的流量至少為它的入邊的下限和,流出它的流量至少為它出邊的下限和。
怎麼限制住這個條件呢?於是我們人為地加入乙個源點s和匯點t:
s:向每個節點連一條邊,容量為它入邊的下限和
t:每個節點向t連一條邊,容量為它出邊的下限和
對每條其它的邊,容量變為ci-bi,即為正常的最大流的邊。
為什麼能這樣呢?
每條邊上的流量可以分為兩種:限制流和自由流
限制流就是為了滿足下限而必須存在的流,也就是該邊的下限
自由流即超出下限的那一部分
我們加入s和t,砍掉其它邊的下限,相當於把其它邊的限制流搶了過來,由s和t管理,這樣子剩下的就是自由流,可以為任意流量。
這樣一來,如果該流網路存在可行流,當且僅當求出s到t的最大流後s的出邊都滿載,t的入邊都滿載。
zoj2314 reactor cooling
#include#include#include#includeusing namespace std;
const int maxn=205,maxm=80005,inf=2000000000;
int inf[maxn],outf[maxn];
inline int read()
while(c>=48&&c<=57)
return out*flag;
}int head[maxn],nedge=0;
class edge
edge[maxm];
inline void build(int a,int b,int w,int l)
; head[a]=nedge++;
edge[nedge]=(edge);
head[b]=nedge++;
}int cur[maxn],s,t,d[maxn];
bool vis[maxn];
bool bfs()
} return vis[t];
}int dfs(int u,int minf)
return flow;
}int maxflow()
return flow;
}int main()
int cnt=0,flow;
for(int i=1;i<=n;i++) build(s,i,inf[i],0),cnt+=inf[i];
for(int i=1;i<=n;i++) build(i,t,outf[i],0);
flow=maxflow();
//cout<>1)
有源匯的可行流
與無源匯的可行流類似,有源匯的可行流就是多了個源點和匯點。這個時候我們可以從另乙個角度來看網路流:雖然s和t不滿足流量限制,但如果我們人為連一條由t到s的容量為正無窮的邊,那麼它就轉化成了所有點都遵循容量限制的無源匯的流網路。
那麼我們再加乙個超級源點s『和超級匯點t』【就相當於上邊的人為加入的源匯點】,就可以轉化為無緣匯的可行流啦。
有源匯的最大流
有源匯的最大流就是在求出有源匯的可行流之後去掉加入的t到s的無窮大的邊,然後再在求完可行流的殘量網路中求一遍由s到t的最大流即為最大流
最後結果為可行流中邊t->s的流量+新一次最大流中新增的流量。
有源匯的最小流
求法:1、同樣加乙個超級源s『,超級匯t』,【這個時候不加邊t->s】求一遍s『到t』最大流
2、加入邊t->s【正無窮】,再求一遍s『到t』最大流。
3、若s『出去的邊不滿流,t』進來的邊不滿流,則無解,否則解為t->s邊的流量。【這些流量為使可行流成立必須加的流】
我很辣雞,只知道這些。
學習筆記 有上下界的網路流
對於有上下界的網路流問題,涉及判是否有解及求解最大 小流,費用流.建立超級源 s 超級匯 t 對於邊 u,v l,u 將其拆成三條邊 s,v l u,v u l u,t l.因為對於邊 u,v l,u u 至少流出 l 的流量,v 至少流入 l 的流量,所以建邊 s,v l,u,t l 而 u v ...
有上下界網路流問題
此類問題可以分為三小類問題 一 無源匯有上下界最大流 二 有源匯有上下界最大流 三 有源匯有上下界最小流 1 無源匯有上下界最大流 題目大意 給n個點,及m根pipe,每根pipe用來流躺液體的,單向的,每時每刻每根pipe流進來的物質要等於流出去的物質,要使得m條pipe組成乙個迴圈體,裡面流躺物...
有上下界的網路流問題
前幾天就想寫了的,一直沒寫,今天就寫完吧。因為在做這些上下界的題的時候,遇到了很多問題,在大神的幫助下還是一一解決了的。英文沒學好誒喂,在sgu和poj各種wa。主要是沒看題,求上下界已經理解了的。做法 將圖的下界分離到乙個附加源和匯中,而上界則變為原弧的上界減去下界的差,構成乙個附加網路,再在附加...