
网络流
文章平均质量分 79
nash142857
这个作者很懒,什么都没留下…
展开
-
poj2396
这道题目题意很简单,就是1-n 那个点表示n行,n+1-n+m+表示m列,然后行列相连,有个上下界,另设源点s=n+m+1到各行上下界为各行值,各列到汇点t=n+m+2上下界为列的和,然后上下界网络流即可。#include#include#define maxn 10000#define inf 1<<30int n,m,s,t,ss,tt,nn,head[300],gap[300],di原创 2012-08-25 17:33:37 · 1526 阅读 · 0 评论 -
hdu2883
这道题目比前面一道求满流的题目多了一点不一样,我理解就是离散化,因为si,ei的范围实在太大,但n的范围却不大,则把所有si,ei列出来,排序,得到最多2*n-1个区间,则每个区间就是各节点,到汇点的容量限制就是m*区间长度。#include#include#includeusing namespace std;const int INF=1<<30;int si[210],ei原创 2012-08-25 18:41:18 · 884 阅读 · 0 评论 -
hdu3061
网络流求最小割,另开源点汇点。对于n个点,如果站力消耗大于0,则源点连条消耗值为权的边过去,反之这个点连条消耗值的绝对值为权的边到汇点,如果攻占b之后才可以攻占a,那么就连条a->b 权值为inf。然后结果就是所有正值之和减去最大流#include#includeint n,head[600],dis[600],gap[600],s,t,m,sum,cnt;const int inf=1原创 2012-08-26 19:09:52 · 535 阅读 · 0 评论 -
hdu2732最大流
这道题目就是拆点,给出是每个点的容量限制,每个点如果可以escape就对汇点连条inf,每个点对可到的柱子连条inf,源点到有lizard的地方连条长为1的边,ans就是sum(lizard)-最大流#include#includeint T,n,d,m,cnt,dis[1000],gap[1000],head[1000],s,t,sum,N;const int inf=10000000;原创 2012-08-26 10:59:57 · 1411 阅读 · 0 评论 -
ZOJ2539
由于最大流是贴dinic模版的所以就只放主函数代码了,这题想了下,是个最小割,现求出每个\p[i]-v0\的和记为s1,然后对每个点\p[i]-v1\-\p[i]-v0\是它的权值,所有权值为负的点权值相反数之和为sum,如果这个是正的,那么就连这个点到汇点一条权值为这个的边,否则就从源点连条权值为这个相反数的边到这个店,然后对于每个点,连条到与之相邻的点一条边,权值是p[i]-p[j]的绝对值,原创 2012-09-04 23:44:52 · 501 阅读 · 0 评论 -
hdu1733 网络流
1.拆点,对于第d天,每个点已被拆为d+1个点,下标代号成等差数列 公差n*m.2.起始的时候,s向第0天的n*m中是人的点连条权值为1的边。3.而后从小到大枚举每天,假设第t天,那么对于t-1天的点可以向四周扩展,或不动,向对应在第t天新加的点连条权为1的边,然后对第t天的n*m点,如果是出口则向汇点连条权值为1的边,然后从源点到汇点做网络流,如果ans等于人数,则break,retur原创 2012-08-26 16:50:08 · 2109 阅读 · 1 评论 -
网络流专辑 转自notonlysuccess
网络流是ACM里非常重要的一大块,变形非常灵活,这些天仅仅只是做了一点点题目,几个经典模型,冰山一角而已.图论可不是练两天就能掌握的,所以也就放弃了一口吃成胖子的想法,打一场持久战,有空的时候更新几道并在下边写点解题报告,所以暂时不可能成为一篇非常完整的整理所以我在下文加了几个相关链接,都是大牛们的整理,并且也有这对题目的相关分析…网络流的题如果直接看分析就浪费了最重要的思考过程,转载 2012-08-26 16:56:57 · 1090 阅读 · 0 评论 -
hdu1569网络流最小割
首先黑白染色,源点到黑点连条边,值为格子数值,然后白色点到汇点也连条这样的边,然后每个黑点对与其相连的白点连条无穷大的边,然后求个最小割,答案就是所有格子数值和减去这个最小割。#include#includeint n,m,cnt,s,t;int mp[51][51],head[3000],dis[3000],gap[3000];const int inf=1<<30;struct ED原创 2012-08-26 00:40:57 · 1364 阅读 · 0 评论