網路流總結

2021-09-17 23:54:20 字數 2058 閱讀 1827

上下界可行流

考慮把每條邊必須經過的流量拆出來,那麼就變成了某些邊必須滿流,求一組可行流。我們把必須滿流的邊拉出來,假想乙個源匯 s,t,每條邊起點連向 s,t 連向終點,跑 s 到 t 的最大流,若拉出來的邊滿流就找到了一組可行流。如果本來就有源匯,那麼從 t 向 s 連流量正無窮的邊,就轉成無源匯網路流了。

上下界最大流

先求出乙個可行流,把連向超級源匯的邊刪掉,再從 s 到 t 求殘餘網路最大流。

上下界最小流

拆滿流邊後,先不加 t 到 s 流量正無窮的邊,跑出乙個最大流,再加上 t 到 s 的邊跑最大流,t 到 s 這條邊的流量就是最小流。感性理解一下,加 t 到 s 邊之前跑最大流會盡可能填滿環流。

例題:luogu清理雪道

zjoi2011 最小割(最小割樹)

每次隨便選擇兩個點,用邊權為他們之間的最小割的邊把他們連起來,再把點集按照最小割的劃分分成兩個部分,每個部分遞迴進行。這樣會形成一棵樹的結構,兩個點的最小割就是樹上兩點間的最小邊權。這道題是模板。

#include#include#include#include#include#include#define ll long long

using namespace std;

struct edgeed[6010];

const int inf=2e9;

int head[151],sz,deep[151],ans[151][151],p[151],q[151],node[151],s,t,vis[151],n,m;

inline void add_edge(int from,int to,int flow)

inline int read()

bool bfs()}}

return false;

}int dfs(int u,int come)

}if(rest) deep[u]=-1;

return come-rest;

}int dinic()

void cut(int u)

}void solve(int l,int r)

}int s=0,t=0;

for(int i=l;i<=r;i++)

int k=l-1;

for(int i=1;i<=s;i++) node[++k]=p[i];

for(int i=1;i<=t;i++) node[++k]=q[i];

solve(l,l+s-1);

solve(l+s,r);

}void init()

int main()

for(int i=1;i<=n;i++) node[i]=i;

solve(1,n);

int mm=read();

for(int i=1;i<=mm;i++)

ed[m<<1];

int n,m,s,t,sz=1,head[n],vis[n],tim,deep[n],q[n],low[n],dfn[n],st[n],top,inst[n],scc,bel[n],u[m],v[m],ind[m];

void add_edge(int from,int to,int flow)

int read()

bool bfs()}}

return false;

}int dfs(int u,int come)

}if(rest) deep[u]=-1;

return come-rest;

}void tarjan(int u)

else if(inst[v]) low[u]=min(low[u],dfn[v]);

}if(low[u]==dfn[u])

}}int main()

while(bfs()) dfs(s,1e9);

tim=0;

for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i);

for(int i=1;i<=m;i++)

else puts("0 0");

}return 0;

}

一些構造

網路流總結

今天學的網路流,總的感覺來說稍難,不管是理解還是什麼,但是理解了後,就變得簡單許多。ford fulkerson演算法 是來求最大流量問題,從源點出發,到匯點,到底能多少能流入匯點。演算法 1 從源點出發,找相鄰邊,如果相鄰邊未被找過並且還可以流入流量就dfs。2 更新流入的邊。3 重複操作,直到沒...

網路流總結

今天做了一天的網路流,也發現了很多有趣 有毒 的建圖方法,也算是收穫很多了,這裡就做個總結吧。網路流跑的方法大家都會我就不說了,題考察的重點也就是建圖。建圖就涉及到2個方面 1.建點。建點其實就是網路流的難點了,一般點弄好了邊也容易了。建點的困難就在於有時要拆點,我總結了一下拆點主要是這幾個作用 a...

網路流總結

1.hdu1532 給網路圖,求1 n的最大流.注意邊數 2 2.hdu3572 經典建圖模型,有些東西能轉換為容量考慮 網路流演算法.dinic學了乙個多路增廣優化,能少一次遞迴的時間 1.hdu1533 建圖方式,假設有cntm個人,cnth個房子,分別對應編號 1,cntm cntm 1,cn...