前言 摆王兴致冲冲地跑到我们机房来对我说跟你讲一个黑科技... Dinic的神奇优化 Dinic优化 我们发现如果Dinic不建反向边会跑的飞起(当然Wa是必然的) 所以考虑在加反向边的基础上优化. 首先我们记录网络中最大的一个流量,设它为Min,然后: 把所有小于Min的边都加入网络中 最大流+=Dinic() Min /= 2 到1 然后在Dinic时不走反向边(但是值要改变),最后在可以走反向边的情况下再来一次 注意bfs的一些操作,如果不当会溢出... 代码实现 #include<std…
// 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html        今天我们来谈谈网络流之Dinic算法.这种算法相比Edmond-Karp算法,更加快速,更加常用.还记得EK吗?每次为了防止流量堵塞,必须进行多次BFS/DFS,非常费时间.而Dinic大叔非常机智的发明了Dinic算法,让这个问题得以解决.        Dinic的核心内容是:反复进行BF…
// 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html UPDATE(20180805):重新看自己的博客,大部分内容还是接受了,但看到这一篇还是不能忍了...当年讲的还是太含糊了,怕是本身也没搞得太清楚.但本着基本保持博文原貌的原则,所以我觉得可能重开一篇会更好.造福人类好吧.链接附上:https://www.cnblogs.com/jinkun113/p/9…
网络流嘛,怎么看都是一堆逗逼题嘛,反正遇到还是都做不起嘛.... 网络流的模板非常简单,难点都在于建图,网络流的建图解决问题范围之广,下至A+B Problem,上至单纯形,线性规划.所以如果对于网络流的各种建图方式不熟悉,那么碰到对应的问题肯定完跪. 最大流: 这一部分确实没什么可以说的,你说他考裸的最大流?是不可能滴.考模拟增广路?至少我现在还没有遇到. 最小割: 网络流题目中最难的题目一般都是最小割,最小割建图大概有三种方式. bzoj 3438 小A的作物 描述 小M在MC里开辟了两块巨…
首先是题目链接  http://codevs.cn/problem/1922/ 结果发现题目没图(心情复杂 然后去网上扒了一张图 大概就是这样了. 如果把每个点和它可以攻击的点连一条边,那问题就变成了求二分图的最大独立集了 (二分图最大独立集:即一个点集,集合中任两个结点不相邻),然后就是建图了. 题图非常好心的帮忙染色了,所以我们可以看出来,一个点可以到达的点和它的颜色是不一样的,所以只需要黑白染色就可以了,然后把黑点看作一个集合, 白点看作一个集合,又因为二分图最大独立集= 二分图最大匹配,…
study from: https://blog.csdn.net/A_Comme_Amour/article/details/79356220 1. Edmonds-Karp 无优化 最坏时间复杂度O(n*m*m) n为点数,m为边数 #include <cstdio> #include <cstdlib> #include <cmath> #include <ctime> #include <cstring> #include <str…
主要还是板子 Edmonds-Karp 从S开始bfs,直到找到一条到达T的路径后将该路径增广,并重复这一过程. 在处理过程中,为了应对“找到的一条路径把其他路径堵塞”的情况,采用了建反向弧的方式来实现“反悔”过程. 这种“反悔”的想法和技巧值得借鉴. int maxFlow() { ; for (;;) { memset(f, , sizeof f); memset(bck, , sizeof bck); std::queue<int> q; f[S] = INF, q.push(S); f…
初学网络流.存一下Dinic板子. 复杂度O(n^2*m) UVA - 1515 Pool construction 把每个草地与 S 相连,花费为dig,每个洞与 T 相连,花费为 然后对于每个两个相邻的点连一条权值为 build 的边. 求最小割,就是把草和洞分开的花费. 因为只有三种割的情况: 割S与草之间的边,那么这个草就与T相连了.所以花费需要dig. 割T与洞之间的边.同理. 割两个相邻的点之间的边.很显然,如果他们连着同一个点(源点或者汇点),那么他们是不会被割开的. 所以只有他们…
网络流指的是:网络流(network-flows)是一种类比水流的解决问题方法.(类似于水管群,有一个源点(水无限多),和一个汇点,最大流就代表这个点水管群(边集)每秒最大能送道汇点的水量) 这个怎么求,首先是枚举从原点能到汇点的路径,然后找到这个路径边权的最小值,这个路劲的每条边减去这个值,大概这个样子 (借用同校某大佬的图) 但是明显没给我反悔的机会嘛,万一我不想这样做,岂不没地方反悔了 ~Point 1 反边~ 这东西就是类似于给你一个反悔的机会的,因为反向图建过去的丑的一批的路径等价于每…
前记 这些是初一暑假的事: "都快初二了,连网络流都不会,你好菜啊!!!" from 某机房大佬 to 蒟蒻我. flag:--NOIP后要学网络流 咕咕咕-------------------------------- 现在是2018-12-29,我终于开始学网络流了. 网络流其实也没有想象的那么难啊,最主要就是要明白怎么建图!!!其他什么的板子一套就完事了. 正式学习 what is 网络流 相信大家都听过网络流这个名字.哦?你知道网络,还知道输入输出流?呀,看来你已经会网络流了啊…