有上下界的網路流 模板

2021-08-27 20:40:37 字數 1347 閱讀 5790

在還沒開始之前先貼乙個**(覺得講的挺好的):

n 個點,m 條邊,每條邊 e  有乙個流量下界 lower(e)和流量上界 upper(e)),求一種可行方案使得在所有點滿足流量平衡條件的前提下,所有邊滿足流量限制。

輸入格式

第一行兩個正整數 n 、m 。

之後的 m  行,每行四個整數 s、t 、lower 、upper。

輸出格式

如果無解,輸出一行no

否則第一行輸出yes,之後 m  行每行乙個整數,表示每條邊的流量。

#includeusing namespace std;

const int maxn=70005;

int sp,tp,cnt=0,head[205],nxt[maxn],to[maxn],cap[maxn],dis[1005],low[maxn],def[205],m,n;

inline int read()

inline void add(int u,int v,int p)

inline bool bfs()

} }return false;

}inline int dfs(const int &u,const int &flow)

if(dinic(sp,tp)==sum)

inline void addedge(int u,int v,int p)

inline bool bfs()

} }return false;

}inline int dfs(const int &u,const int &flow)

addedge(de,st,1<<30);

if(dinic(sp,tp)==sum)

inline void add(int u,int v,int p)

bool bfs(int st,int en)

} }return false;

}inline int dinic(int u,int flow,int ee)

} }return res;

}int main()

int sum=0,first;

add(t,s,inf);

first=cnt-1;

for(i=1;i<=n;++i)

int maxflow=0;

while(bfs(sp,tp))

maxflow+=dinic(sp,inf,tp);

if(maxflow==sum)

else printf("please go home to sleep\n");

return 0;

}

有上下界網路流

前言 下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看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三道題。作為周源文章中提到的求解上下...

有上下界的網路流

1.無匯源有上下界最大流 以前寫的最大流預設的下界為0,而這裡的下界卻不為0,所以我們要進行再構造讓每條邊的下界為0,這樣做是為了方便處理。對於每根管子有乙個上界容量up和乙個下界容量low,我們讓這根管子的容量下界變為0,上界為up low。可是這樣做了的話流量就不守恆了,為了再次滿足流量守恆,即...