幾個月沒碰過網路流了,想她了,所以撿起來,這麼好的東西怎麼能不用?
網路流是啥?
網路流是給定乙個有向圖,每條邊有乙個容量,這個圖還有乙個起點叫源點,乙個終點叫匯點。把有向圖想象成有多條路徑的水流管道圖,每條邊的容量就是能經過該邊的最大水流的流量。
最大流是啥?
最大流就是從源點能流向匯點的最大流量和。
增廣路徑是啥?
從源點到匯點的一條可行流路徑。
1.ekek
ek演算法
思想:每次bfs
bfsbf
s找到一條增廣路,然後建立反邊權(使其具有反悔的貪心性質),這個需要結合圖來想,直到找不到增廣路此時的流量和就是最大流。
時間複雜度:o(n
m2
)o(nm^2)
o(nm2)
,每次bfs
bfsbf
s複雜度o(m
)o(m)
o(m)
,最多找o(n
m)
o(nm)
o(nm
)條增廣路。
int n,m,g[n]
[n],f[n]
,pre[n]
;//f[i] 儲存從st到i路徑的最大流量
//pre 記錄路徑
intbfs
(int st,
int ed)
}return pre[ed]
?f[ed]:-
1;}intek(
int st,
int ed)
}return ans;
}
對應的例題講解
2.din
ic
dinic
dini
c演算法
思想:每次bfs
bfsbf
s給圖分層,這樣dfs
dfsdf
s就能避免重複走原路和不必要的路徑,每次dfs
dfsdf
s能找到多條增廣路。
時間複雜度:o(n
2m
)o(n^2m)
o(n2m)
。
int n,m,h[n]
,st,ed,cnt=
1,dep[n]
,cur[n]
;//dep[i] 分層
//cur[i] 當前弧優化.
struct edgee[m<<1]
;void
add(
int u,
int v,
int w)
,h[u]
=cnt;
e[++cnt]
=,h[v]
=cnt;
}int
dfs(
int u,
int c)if(
!res)
return c;
//如果剩餘流量為0,說明最大流不能再更大了,直接返回.
}return c-res;
}bool
bfs()}
return dep[ed];}
ll s=0;
while
(bfs()
) s+
=dfs
(st,inf)
;printf
("%lld\n"
,s);
對應的例題講解
1.求最大流。
常見題型:
1.給定兩個集合a,b
a,ba,
b,求最大的集合匹配。
思路:建圖,源點連集合a
aa,b
bb連向匯點,然後a,b
a,ba,
b根據題目給的條件建邊,然後跑最大流。
2.求最大流最小費用。在ekek
ek基礎上,跑spf
aspfa
spfa
即可。3.二分圖最大匹配。
跑最大流即可。
對應的例題講解:
傳送門
4.最大權閉合子圖
閉合子圖是對於每個點的後繼都在該子圖里。
常用於題型:給定若干點,每個點的點權可正,可負,選取每個正權點時必須選擇幾個負權點,我們想要求出最大權的閉合子圖,就可以源點與正權點建立權值邊,負權點與匯點連權值的絕對值的邊,然後正權點與必須選擇的負權點連權值為inf
infin
f的邊(保證不會被割)。
a ns
=(∑正
權邊−∑
不被選的
正權−∑
被選的負
權邊的絕
對值之和
)=∑正
權邊−最
小割
ans=(\sum正權邊-\sum不被選的正權-\sum被選的負權邊的絕對值之和)=\sum正權邊-最小割
ans=(∑
正權邊−
∑不被選
的正權−
∑被選的
負權邊的
絕對值之
和)=∑
正權邊−
最小割.
根據最小割最大流定理,所以我們跑最大流即可。
例題:
例題1例題2例題3
關於這個知識點如果不理解,可以去下面的文章學習。
傳送門1
傳送門2
知乎_pecco
網路流複習
模型轉化 原題求最小代價,則直接設割掉的是需要選擇的。若原題求最大收益,則設割掉的是不選擇的,最後用總和減去最小割就是答案。1.3.1定義 1.3.2應用方法 給出的圖一般是乙個有向圖,乙個閉合圖可以看做是一些點具有相互依賴的關係。因此對於有依賴關係,並且題目可以轉化成給某些點賦權為正,某些點賦權為...
網路流複習計畫
既然是複習網路流,那就不會去做水題了吧233 a.bzoj3996 tjoi2015線性代數 看到題就被嚇壞了2333。線性代數根本沒看完好嗎?然後。md轉個模型就是網路流了 題目大意 給定乙個n n 的矩陣b 和乙個1 n 的行向量c 求乙個1 n 的01矩陣a 使 a b c at 最大 a b...
網路流複習計畫
以前一直沒有刻意去練習過網路流的建圖,相當於完全不會網路流。1 usaco4.2 草地排水drainage ditches 最大流 2 清理雪道 最小流 3 有源匯上下界最大流 有源匯上下界最大流模板題 4 有源匯上下界最小流 有源匯上下界最小流 5 bzoj3698 xww的難題 6 士兵占領 7...