P3376 模板 網路最大流

2022-02-19 08:46:38 字數 1847 閱讀 3036

網路流用於解決流量問題

網路流:所有弧上流量的集合f=,稱為該容量網路的乙個網路流。

1、定義:帶權的有向圖g=(v,e),滿足以下條件,則稱為網路流圖(flow network):

僅有乙個入度為0的頂點s,稱s為源點。

僅有乙個出度為0的頂點t,稱t為匯點。

每條邊的權值都為非負數,稱為該邊的容量,記作c(i,j)。

2、弧的流量:通過容量網路g中每條弧< u,v>,上的實際流量(簡稱流量),記為f(u,v)。

3、可行流:在容量網路g中滿足以下條件的網路流f,稱為可行流。

a.弧流量限制條件:   0

<=f(u,v)<=c(u,v);

b:平衡條件:即流入乙個點的流量要等於流出這個點的流量,(源點和匯點除外).

4、零流 若網路流上每條弧上的流量都為0,則該網路流稱為零流。 

5、偽流:如果乙個網路流只滿足弧流量限制條件,不滿足平衡條件,則這種網路流為偽流,或稱為容量可行流.(預流推進演算法有用)。

6、對於網路流圖g,流量最大的可行流f,稱為最大流。

7、弧的型別:

a.飽和弧:即f(u,v)=c(u,v);

b.非飽和弧:即f(u,v) < c(u,v);

c.零流弧:即f(u,v)=0;

d.非零流弧:即f(u,v)>0.

8、鏈:

在容量網路中,稱頂點序列(u1,u2,u3,u4,..,un,v)為一條鏈要求相鄰的兩個頂點之間有一條弧.

設p是g中一條從vs到vt的鏈,約定從vs指向vt的方向為正方向.在鏈中並不要求所有的弧的方向都與鏈的方向相同.

1、對於任意乙個時刻,設f(u,v)實際流量,則整個圖g的流網路滿足3個性質:

容量限制:對任意u,v∈v,f(u,v)≤c(u,v)。

反對稱性:對任意u,v∈v,f(u,v) = -f(v,u)。從u到v的流量一定是從v到u的流量的相反值。

流守恆性:對任意u,若u不為s或t,一定有∑f(u,v)=0,(u,v)∈e。即u到相鄰節點的流量之和為0,因為流入u的流量和u點流出的流量相等,u點本身不會"製造"和"消耗"流量。

2、最大流最小割定理:乙個圖的最大流等於其最小割。(割掉每條可行流上的最小流量邊)。

dinic演算法:

#include#include

#include

#include

#include

#include

#include

const

int inf=0x7fffffff

;using

namespace

std;

intn,m,s,t;

inta,b,c;

int head[10008],vis[10008],dis[10008],num_edge=1

;int deep[10008

];struct

edgeedge[

100008

<<1

];queue

q;void addedge(int

from,int to,int

dis)

bool

bfs()}}

if(deep[t]==0) return0;

else

return1;

}int dfs(int u,int

dist)}}

return0;

}int

dinic()

}return

ans;

}int

main()

printf("%d

",dinic());

return0;

}

P3376 模板 網路最大流

ek演算法 個人感覺沒有dinic好理解 1 edmonds karp演算法2 時間複雜度o n m m 3 include4 include5 include6 include7 include8 using namespace std 910 const int n 10005 11 const...

P3376 模板 網路最大流

如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,包含乙個正...

P3376 模板 網路最大流

luogu p3376 求網路最大流.首先介紹一下網路流的基本概念.乙個帶權有向圖,邊權稱為容量.其中乙個只有出度的點,源點,乙個只有入度的點,匯點.流從源點源源不斷地產生,在匯點消失.邊的容量就是能它流過的最大流,實際流過的流成為邊的流量.源點流出的最大的流一定和匯點消失的最大的流相等,我們把這個...