
网络流
ioo_2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ1459
在一个电网里,有n个结点,其中有np个发电站,nc个消费者,每个发电站能够产生p[u]的电,不会消耗电;每个消费者可以消耗c[u]的电,不会产生电;给出部分结点之间的供电线路的容量,求这个电网最多消耗多少电. 建立一个源点,一个汇点.将所有电站与源点相连,弧容量为p[u];所有消费者与汇点相连,弧容量为c[u],求最大流.include include include include includ原创 2015-05-27 21:06:45 · 424 阅读 · 0 评论 -
网络流学习:(最大流)POJ1149
题意:养猪场有M个猪圈,每个猪圈可以容纳的猪的数量没有限制.养猪场的工人没有钥匙,但是要买猪的客户有若干个猪圈的钥匙.当一个客户来买猪的时候他会把所有可以打开的猪圈打开,客户离开后工人可以将猪圈里剩余的猪分配到任意猪圈.工人预先知道客户的需求和所拥有的钥匙.问养猪场一天最多可以卖出多少头猪. 网络流的题目建图果然恶心…. 建图:建立一个源点和一个汇点,如果一个客户i首先打开一个猪圈,将i与源点相原创 2015-05-21 21:30:29 · 816 阅读 · 0 评论 -
网络流学习(一)基本概念
容量网络:设G(V,E),是一个有向网络,在V中指定了一个顶点,称为源点(记为Vs),以及另一个顶点,称为汇点(记为Vt);对于每一条弧属于E,对应有一个权值c(u,v)>0,称为弧的容量.通常吧这样的有向网络G称为容量网络.弧的流量:通过容量网络G中每条弧,上的实际流量(简称流量),记为f(u,v);网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.可行流:原创 2015-05-18 19:20:34 · 1199 阅读 · 0 评论 -
网络流学习:最大流Dinic算法总结
Dinic算法即连续最短增广路算法. 思路很清晰,代码很简单. 每次用BFS建立层次网络,如果汇点不在层次网络中,则退出算法; 得到层次网络后,利用DFS进行增广.while(BFS()) ans+=DFS(1,inf);BFS的过程中用level数组存各点的层次,相当于将层次网络储存了.bool BFS(){ queue<int> q; memset(level,原创 2015-05-22 15:04:47 · 384 阅读 · 0 评论 -
最小费用最大流;HDU1533
//第一次写费用流,有些地方还是不太懂,但是思路很简单。//建立伴随网络后,每次用spfa找最短路然后增广就好了#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <cmath>#define maxN 300#define maxM 10005#define INF 0xff原创 2015-08-03 10:45:14 · 362 阅读 · 0 评论 -
最小费用最大流:HDU3488
需要将每个点都拆成两个点,然后根据输入的边建立二分图,再建立超源点和超汇点,再y用最小费用最大流就搞定。只要存在完美匹配就可以保证所有的点都在环上,本题其实就是求二分图的最小权匹配。还有一个KM算法可以更好地解决这类问题,抽时间去学学。#include #include #include #include #define maxN 205#define maxM 30005#d原创 2015-08-03 20:30:11 · 446 阅读 · 0 评论 -
网络流学习(三)POJ2112
写过一篇二,被吃了,不想在写了. POJ2112,用Floyd+二分+最大流.我的最大流算法用的是Dinic算法,但是不知道为什么写出来就TLE了,..,..,.. 后来发现被书上的代码误导了,书上把层次网络都全部求出来了,其实是没必要的,只要用一个数组对每个点的层次标记就好了. 附上Dinic算法的思路: Dinic算法的思路也是分阶段地在层次网络中增广.它与最短增广路算法的不同之处是最短原创 2015-05-21 20:18:48 · 649 阅读 · 0 评论