
图论—网络流
文章平均质量分 69
My_ACM_Dream
生活没有彩排每天都是现场直播
展开
-
ZOJ 2587(判断最小割的唯一性)
dfs 从源点到汇点如果能访问到所有点说明唯一如果不能则不唯一原创 2014-11-13 10:32:34 · 851 阅读 · 0 评论 -
hdu3395(拆点+最大费用流)
一直wa/** this code is made by LinMeiChen* Problem: hdu 3395* Type of Problem: 网络流* Thinking:* Feeling:*/#include#include#include#include#include#include#include#include#include#includ原创 2014-11-13 10:29:33 · 540 阅读 · 0 评论 -
Best#1_3 hdu4859(最小割)
因为E有两个选择D或者. 其实就暗含了最小割的模型。 最小割的话,就是一部分分到源点一侧,一部分分到汇点一侧。 如果把源点分在一起当成是. 和汇点分在一起当成是D. 那么建图的时候,相邻的建流量为1的边。 如果这个点本来是. 那个连汇点是INF,本来是D的,连源点是INF。如果是这种建图的话,最小割求出来的最小周长。 我们需要的最大周长。原创 2014-11-15 11:21:28 · 631 阅读 · 0 评论 -
ISAP算法
struct EDGE{ int v,next,c,f;}E[maxn<<1];int head[maxn],tol;int gap[maxn],dep[maxn],pre[maxn],cur[maxn];void Init(){ memset(head,-1,sizeof head); tol=0;}void add_edge(int u,int v,in原创 2015-03-25 22:55:01 · 628 阅读 · 0 评论 -
poj 3436 ACM Computer Factory (最大流)
题目真心没读懂,参考这位仁兄通过拆点建图,然后跑一边最大流,枚举每条边找出有流量减少的边,那么这条边肯定是最大流上的边输出即可。#include#include#include#include#include#include#include#include#include#include#define B(x) (1<<(x))using namespace std;原创 2015-03-26 00:55:08 · 460 阅读 · 0 评论 -
poj 3281 Dining (最大流)
题意:给出N个牛,D个食物,和F杯饮料。然后给出每头牛喜欢吃的食物和饮料的编号,但是没个食物和每一杯饮料只能供一头牛享用,问最多有多少头牛可以同时吃到食物和喝到饮料。题解:开始我的想法超级源点连饮料和食物,然后对应的饮料食物连上能吃它的牛,然后牛连超级汇点。结果wa。真确做法是源点连食物,食物连牛,牛连饮料,饮料连汇点,牛拆点成两个点。#include#include#incl原创 2015-03-26 21:22:04 · 544 阅读 · 0 评论 -
poj 2195 Going Home (费用流)
水题,直接搞。#include#include#include#include#include#include#include#include#include#include#define B(x) (1<<(x))using namespace std;void cmax(int& a,int b){ if(b>a)a=b; }void cmin(int& a,in原创 2015-03-27 01:51:58 · 419 阅读 · 0 评论 -
poj 2516 Minimum Cost (最小费用流)
这题不错,分开最小费用流,每种物品来一次。/** this code is made by LinMeiChen* Problem:* Type of Problem:* Thinking:* Feeling:*/#include#include#include#include#include#include#include#include#include#原创 2014-11-13 10:23:46 · 627 阅读 · 0 评论 -
hdu 4289 Control (最小割)
题意:给出一个图,盗贼在s点,警察在t点,给出在每个点设置捕获点需要的花费,现在问在让盗贼无法通过需要的最少花费。题解:最小割定理,拆点后,把点权变为边权,然后跑一边最大流,结果就是最小割的值。#include#include#include#include#include#include#include#include#include#include#defi原创 2015-03-29 16:18:13 · 415 阅读 · 0 评论 -
hdu 2732 Leapin' Lizards (拆点,最大流)
题意:给出一个地图,地图里面有一些青蛙,每个位置有限定承受的次数,如果青蛙跳跃到某个位置,那么这个位置的承受力就减一,如果承受力是0就无法到达这个位置。现在问最少有多少青蛙无法跳出地图。题解:将有承受力的点拆点,然后网络流。TL中。。#include#include#include#include#include#include#include#include原创 2015-03-30 19:58:03 · 482 阅读 · 0 评论 -
上下界 最小流
做法:1、和最大流有点相反,先ss tt连边(和最大流一样)但是这个和最大流不同的是先不用建立 t-s 的边2、Dinic(ss,tt)3、现在建立 t-s (t, s, 0, oo)4、maxflow=Dinic(s,t) if(sum==maxflow)成立有解不成立无解 sum和最大流一样表示ss流出的所有边流量和5、输出边的流量#include#include原创 2014-11-13 10:20:06 · 649 阅读 · 0 评论 -
可行流
对于无源汇问题,方法有两种.1 从边的角度来处理. 新建超级源汇, 对于每一条有下界的边,x->y, 建立有向边 超级源->y ,容量为x->y下界,建立有向边 x-> 超级汇,容量为x->y下界.建立有向边 x->y,容量为x->y的上界减下界.2 从点的角度来处理. 新建超级源汇,对于每个点流进的下界和为 in, 流出此点的下界和为out.如果in > out. 建立有原创 2014-11-13 10:16:39 · 2744 阅读 · 0 评论 -
Poj2175(费用流,负环消圈)
挺好的题 充分利用了spfa 判断最费用流是否最优的充分必要条件是——图中是否存在负环 如果存在说明最费用流最优否则相反原创 2014-11-13 10:25:00 · 1746 阅读 · 1 评论 -
poj1087(题意难懂)
这道题容易读懂,但是建图比较不容想到,源点到用电器建边,用电器到插头建边,插头到汇点建边,且权值都为1,置配器的两个插头节点建立权值为INF的边抽象出现,其实最终的最大流量就是能够接通的电器数,只要用电器数-maxf就ok了。这里被map函数搞死了,以后记得组后用string不要用char map原创 2014-11-13 10:02:04 · 860 阅读 · 0 评论 -
上下界 最大流
做法:1、有源汇编成无源汇 (t-s, 0, INFMAX)2、ss tt 连接个点 intout>0(ss-i,0,inout[i]) inout3、然后跑一片最大流 max=Dinic(ss,tt) 之后的这步很重要 head[ss]=head[tt]=-1//删除ss 和 tt4、if( max == sum ) 成立有解 不成立无解 sum=所有ss流出的流量总原创 2014-11-13 10:18:12 · 676 阅读 · 0 评论 -
hdu3416(最短路+最大流)
最短路+最大流用Spfa算出 s到各个点的最短路 t到各个点的最短路if( dis1[i] + dis2[i] + map[i][j] ==dis1[t] )满足这种情况说明边在最短路上,所以根据这个方法建边然后最大流解决原创 2014-11-13 10:08:28 · 1271 阅读 · 0 评论 -
最小(大)费用流
算法很简单 Spfa+增广路1、首先按照边的费用Spfa最短路(如果是求最大费用可用最长路)2、接着增光路的可行流的调节3、重复1 2 直到最短路无法到达汇点为止挺简单的注意细节即可原创 2014-11-13 10:21:26 · 763 阅读 · 0 评论 -
最小割
最小割定理:最大流的流量等于最小割对应的边集容量的最小值Poj 1815 拆点+枚举暴力 好题 赞原创 2014-11-13 10:30:56 · 698 阅读 · 0 评论 -
强大的Dinic
Dinic算相对来讲比较稳定,写成邻接表示最好的选择这里以hdu 4280 为例子 加入一个开栈的外挂神器递归版:struct EDGE{int v, w;int next;}E[maxn*2];int head[maxn], level[maxn];int k;void addE(int u, int v,int w){E[k].v = v原创 2014-11-13 09:58:18 · 660 阅读 · 0 评论 -
poj 2112 Optimal Milking (输出超限)
题意:K太机器,C头牛,之间有距离,每个机器能供m头牛,没头牛需要一台机器。问在所有牛都有机器供应,并且牛离机器距离的最大距离最小是多少。题解:二分枚举最大距离,然后网络流建边,满足不大于枚举的最大距离才能建边.#include#include#include#include#include#include#include#include#include#defi原创 2015-04-09 19:40:09 · 930 阅读 · 0 评论