图论-网络流⑤-最大流解题②
上一篇:图论-网络流④-最大流解题①
下一篇:图论-网络流⑥-费用流
参考文献:
暂无
大纲
- 什么是网络流
- 最大流(最小割)
- D i n i c Dinic Dinic (常用)
- E K EK EK
- S a p Sap Sap
- F o r d − F u l k e r s o n Ford-Fulkerson Ford−Fulkerson(不讲)
- H L P P HLPP HLPP (快)
- 最大流解题 Start \color{#33cc00}\texttt{Start} Start End \color{red}\texttt{End} End
- 费用流
- E K EK EK 费用流
- D i n i c Dinic Dinic 费用流
- z k w zkw zkw 费用流
费用流解题
有上下界的网络流
- 无源汇上下界可行流
- 有源汇上下界可行流
- 有源汇上下界最大流
- 有源汇上下界最小流
- 最大权闭合子图
- 有上下界的网络流解题
上篇中讲解了最大流解题当中的两道经典例题,这一篇会讲进阶的网络最大流解题。
拍照
最小割经典例题,简讲。
s s s 连每次拍照,流量为获益。每个下属连 t t t,流量为交费。每次拍照连相关下属,流量为无穷。用最小割思想,要么牺牲收益,要么交费,答案为收益总和 − - −网络流图最小割。
[网络流24题]试题库问题
难度在于输出方案,需要掌握网络流的精髓。
只有你知道网络流每条边是什么意思,这题没有难点。蒟蒻就放一下输出方案部分的代码吧:
for(int i=1;i<=k;i++){
printf("%d:",i);
for(int j=g[i+tmp+1];j;j=e[j].nex){
int to=e[j].adj;
if(to>1&&to<=tmp+1&&e[j].fw)
printf(" %d",to-1);
}
puts("");
}
奶牛隐藏
你现在有 5 5 5 分钟的看题时间和 2 2 2 分钟的谔谔时间。(我保证这题就是网络最大流题)[提示]
如果你实在做不出来,看了提示后可能恍然大悟。二分是个重要的思路,但这题怎么二分呢?首先这里的道路长度是不可以直接利用的,要 F l o y d Floyd Floyd 求一下节点两两直接的最短路,然后二分时间,如果两个节点可以走到,连边(因为有初始结束状态,所以拆点),然后跑普通的最大流。
整理一下:
二分时间 m i d t midt midt。
s s s 向每个牛棚的一号点连流量为牛数的边
每个牛棚的二号点向 t t t 连流量为牛棚容量的边
对于每两个点 i , j i,j i,j,如果 d i s [ i ] [ j ] dis[i][j] dis[i][j] 小于等于 m i d t midt