解决最大流问题我搜到了一堆的算法:EK算法、FF算法、Dinic算法、SAP算法、ISAP算法

然而并没有什么鸟用

掌握最常见的Dinic就够了,据说极限优化的ISAP比Dinic更快一些。。我当不知道好了

模板题Codevs1993

给定源点汇点,求从源点走到汇点的所有流量和,最大流就是求最大值了

建图直接Dinic下面给代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
const int INF=0x7fffffff;
int n,m,cnt=1,ans;
int g[maxn],q[maxn],h[maxn];
struct Edge{int t,next,v;}e[maxn];
void addedge(int u,int v,int w)
{
e[++cnt].t=v;e[cnt].next=g[u];
g[u]=cnt;e[cnt].v=w;
}
bool bfs()
{
memset(h,-,sizeof(h));
int t=,w=,u;
q[t]=;h[]=;
while(t!=w)
{
u=q[t];t++;
if(t==) t=;
for(int tmp=g[u];tmp;tmp=e[tmp].next)
{
if(e[tmp].v&&h[e[tmp].t]==-)
{
h[e[tmp].t]=h[u]+;
q[w++]=e[tmp].t;
if(w==) w=;
}
}
}
if(h[n]==-) return ;
return ;
}
int dfs(int x,int f)
{
if(x==n) return f;
int w,used=;
for(int tmp=g[x];tmp;tmp=e[tmp].next)
{
if(e[tmp].v&&h[e[tmp].t]==h[x]+)
{
w=dfs(e[tmp].t,min(f-used,e[tmp].v));
used+=w;e[tmp].v-=w;e[tmp^].v+=w;
if(used==f) return f;
}
}
if(!used) h[x]=-;
return used;
}
void dinic()
{
while(bfs()) ans+=dfs(,INF);
}
int main()
{
scanf("%d%d",&m,&n);
int x,y,z;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
addedge(x,y,z);
addedge(y,x,);
}
dinic();
printf("%d",ans);
return ;
}

注意Edge里面的v是容量,还有建图的时候要注意一下怎么建的

别的就是直接求就好了

图论:Dinic算法的更多相关文章

  1. 图论4——探索网络流的足迹:Dinic算法

    1. 网络流:定义与简析 1.1 网络流是什么? 网络流是一种"类比水流的解决问题方法,与线性规划密切相关"(语出百度百科). 其实,在信息学竞赛中,简单的网络流并不需要太高深的数 ...

  2. ACM/ICPC 之 Dinic算法(POJ2112)

    Optimal Milking //二分枚举最大距离的最小值+Floyd找到最短路+Dinic算法 //参考图论算法书,并对BFS构建层次网络算法进行改进 //Time:157Ms Memory:65 ...

  3. ISAP算法对 Dinic算法的改进

    ISAP算法对 Dinic算法的改进: 在刘汝佳图论的开头引言里面,就指出了,算法的本身细节优化,是比较复杂的,这些高质量的图论算法是无数优秀算法设计师的智慧结晶. 如果一时半会理解不清楚,也是正常的 ...

  4. hdu-3572 Task Schedule---最大流判断满流+dinic算法

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...

  5. dinic算法求最大流的学习

    http://trp.jlu.edu.cn/software/net/lssx/4/4.38.htm http://www.cnblogs.com/zen_chou/archive/0001/01/0 ...

  6. 网络流(最大流-Dinic算法)

    摘自https://www.cnblogs.com/SYCstudio/p/7260613.html 网络流定义 在图论中,网络流(Network flow)是指在一个每条边都有容量(Capacity ...

  7. [知识点]网络流之Dinic算法

    // 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html      ...

  8. 学习笔记 --- 最大流Dinic算法

    为与机房各位神犇同步,学习下网络流,百度一下发现竟然那么多做法,最后在两种算法中抉择,分别是Dinic和ISAP算法,问过 CA爷后得知其实效率上无异,所以决定跟随Charge的步伐学习Dinic,所 ...

  9. Power Network(网络流最大流 & dinic算法 + 优化)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 24019   Accepted: 12540 D ...

随机推荐

  1. mysql 函数以及操作总结

    1. 拼接 concat(参数1,参数2,.. ,参数)  实现将多个字符串拼接到一起 要批量修改一个字段值   字段值又是复杂的sql 计算得来   通过查询字段值 和 修改的条件fundId(这是 ...

  2. GDB抓虫之旅(上篇)

    本文来自网易云社区. 作者:盛国存 前言 问: gdb是什么? 答: 强大的UNIX下命令行调试工具. 问: gdb能干什么? 答: 让你随心所欲的驾驭你的程序:Start.Stop.Examine. ...

  3. springmvc基础篇—处理图片静态资源文件

    当我们在web.xml中对DispatcherServlet的过滤设置为/ 的时候,表示对所有的路径进行拦截过滤,那么不可避免的就会产生一个问题,那就是像图片这种静态资源文件我明明引用路径有,但就是加 ...

  4. loadrunner创建测试脚本运行无响应 不记录脚本

    解决一运行User Generator直接程序卡死无响应的办法. (1)“我的电脑”点右键->属性->高级 点选“性能”中的“设置” (2)打开对话框后,进入“数据执行保护”,如果空白框中 ...

  5. Qt程序加图标

    第一步 准备一个ICON图标 例如:myicon.ico 新建文本文件,里面编辑文字 IDI_ICON1 ICON DISCARDABLE "myicon.ico" 文件另存为 x ...

  6. SDOI2013森林

    题面 主席树启发式合并,每次连边维护并查集,集合大小,求lca所需信息,合并两个树上的主席树, 重点看代码. #include <iostream> #include <algori ...

  7. NLP系列-中文分词(基于统计)

    上文已经介绍了基于词典的中文分词,现在让我们来看一下基于统计的中文分词. 统计分词: 统计分词的主要思想是把每个词看做是由字组成的,如果相连的字在不同文本中出现的次数越多,就证明这段相连的字很有可能就 ...

  8. kinit

    su tf$ kinit -k -t /tmp/tf.keytab tf/admin@SINO.COM

  9. Python 学习笔记之 Numpy 库——数组基础

    1. 初识数组 import numpy as np a = np.arange(15) a = a.reshape(3, 5) print(a.ndim, a.shape, a.dtype, a.s ...

  10. BZOJ 4029 HEOI2015 定价 数位贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4029 题意概述:对于一个数字的荒谬程度定义如下:删除其所有的后缀0,然后得到的数字长度为a ...