
图论:网络流
文章平均质量分 83
BRCOCOLI
初学者 记录成长 Fighting
展开
-
POJ 1273 Drainage Ditches 网络流算法 .
题目地址:http://poj.org/problem?id=1273裸的网络流Dinic算法如下:#include#include#include#includeusing namespace std;const int maxn=300;const int INF=(1<<30);int m,n; //m为顶点数,n为边数 int G[maxn][maxn];原创 2016-08-15 15:12:56 · 225 阅读 · 0 评论 -
HDU 5889 Barricade 最短路最小割 -
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5889#include#include#include#include#include#includeusing namespace std;const int maxn=1000+5;const int INF=0x3f3f3f3f;int N,M;//网络流struct原创 2016-09-23 18:44:36 · 306 阅读 · 0 评论 -
POJ 2396 Budget 带下限的网络流 *
题目地址:http://poj.org/problem?id=2396真的是一个下午全在弄这道题,woc!一看AC了真TM激动,hhh思路:这道题可以转化成容量有下界的最大流问题,将方阵的行从1……n编号,列n+1……n+m编号,添加源点s=0和汇点t=n+m+1.1>将源点和每一个行节点相连,相连所形成的边的容量和下界置为该行所有数字的和2>将每一个列节点和汇点相连,原创 2016-08-19 18:52:57 · 408 阅读 · 0 评论 -
有下限的网络流
思路转自博客:http://blog.youkuaiyun.com/water_glass/article/details/6823741上下流相关的网络流的各种问题在Amber大牛的《图论原理》里讲的特备清楚。。。。。资料需要网上下载。。我就把原文摘抄下来吧。。。。。。问题模型:给定一个加权的有向图,满足:(1)容量限制条件:原创 2016-08-19 18:57:35 · 1606 阅读 · 0 评论 -
最小费用网络流
思路:反复用spfa算法做源到汇的最短路进行增广,边权值为边上单位费用。反向边上的单位费用是负的。直到无法增广,即为找到最小费用最大流。成立原因:每次增广时,每增加1个流量,所增加的费用都是最小的。因为有负权边(取消流的时候产生的),所以不能用迪杰斯特拉算法求最短路。因为增广的时候要知道上个节点,这不难,但还要快速的知道其反向边是哪个,这个就比较麻烦而如果用原创 2016-08-19 17:37:41 · 599 阅读 · 0 评论 -
POJ 2135 Farm Tour 最小费用最大流 -
题目地址:http://poj.org/problem?id=2135由于去和回来可以看成:2条从1到n的不同的路。所以转化成求从1到n的两条不同的路。建立一个源点,连接1号景点,无费用,容量为2(表示可以有两条路)同理,建立一个汇点,连接n号景点,无费用,容量为2.这样,如果求的的最大流是2,就表示了有两条从1到n的不同的路。(因为中间的点边容量只是1,只能用一次)这样求原创 2016-08-19 17:25:32 · 332 阅读 · 0 评论 -
POJ 2112 Optimal Milking Dinic+二分查找 -
题目地址:http://poj.org/problem?id=2112一般一堆数中最大值的最小值用二分查找,就是先假设一个数,在求一下看看符不符合题意,如果符合就缩小范围建图方法如下:每个奶牛和挤奶器都是一个节点,添加一个源,连边到所有奶牛节点,这些边容量都是1。添加一个汇点,每个挤奶器都连边到它。这些边的容量都是M。再每次根据Dinic算法求出的最大流是不原创 2016-08-18 17:43:38 · 275 阅读 · 0 评论 -
网络流算法
求最大流的过程,就是不断找到一条源到汇的路径,然后构建残余网络,再在残余网络上寻找新的路径,使总流量增加,然后形成新的残余网络,再寻找新路径…..直到某个残余网络上找不到从源到汇的路径为止,最大流就算出来了。每次寻找新流量并构造新残余网络的过程,就叫做寻找流量的“增广路径”,也叫“增广”各种算法的不同之处,也就是在寻找一条从源到汇的过程中进行优化而已1)原创 2016-08-15 15:05:00 · 493 阅读 · 0 评论 -
POJ 3436 ACM Computer Factory EK .
题目地址:http://poj.org/problem?id=3436写了起码4hour+....假设两个超级汇点源点,到000,和111点因为p最大只有10,所以一个整数就能保存保存点比较麻烦,一开始想的是map 给每个点一个id,但是两个相同的点,比如说010,不能看成同一个点,因为机器都不同,等下路径都找不了了所以用in[],out[]保存出来的点和进去的点,当out[u原创 2016-08-18 15:52:18 · 289 阅读 · 0 评论 -
HDU 5294 Tricks Device 最短路最小割 -
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5294用Dijkstra求出所有点到起点的最短路径然后 如果dist[u]-dist[v]==w 说明该边可能是在最短路径中,但这种方法会掺入一些没用的 ,不联通的边然后利用网络流,求出最大流就是最小割了#include#include#include#include#i原创 2016-09-23 18:31:13 · 349 阅读 · 0 评论