#include <iostream>
#include <cstdio>
#include <vector> using namespace std;
const int maxn=1e3+;
//maxn means the max
const int INF=~0u>>;
struct node{
int to,cap,rev;
node(int _to,int _cap,int _rev):to(_to),cap(_cap),rev(_rev){}
};
vector<node> edge[maxn];
bool vis[maxn];
void add(int from,int to,int cap){
edge[from].push_back(node(to,cap,edge[to].size()));
edge[to].push_back(node(from,,edge[from].size()-));
} //dfs 小心爆int
int dfs(int v,int t,int f){
if(v==t) return f;
int i;
for(i=;i<edge[v].size();++i){
int p=edge[v][i].to;
if(!vis[p]&&edge[v][i].cap>){
vis[p]=true;
int flow=edge[v][i].cap;
int d=dfs(p,t,min(flow,f));
if(d>){
edge[v][i].cap-=d;
edge[p][edge[v][i].rev].cap+=d;
return d;
}
//vis[p]=false;//这里丢了
//如果加上了对流量大于零的判断我们
//完全可以不写这一句
}
}
return ;
}
int maxflow(int s,int t){
int flow=;
for(;;){
memset(vis,,sizeof(vis));//这里丢了
vis[s]=true;//这里丢了
int f=dfs(s,t,INF);
if(f==) break;
flow+=f;
}
return flow;
}
int n,s,t;
void print(){
int i,j;
//这样写必须保证s<=t
for(i=s;i<=t;++i){
printf("head:%d",i);
for(j=;j<edge[i].size();++j){
node t=edge[i][j];
printf("==>(%d,%d,%d)",t.to,t.cap,t.rev);
}
printf("\n");
}
}
int main(){
// printf("INF:%d\n",INF);
scanf("%d",&n);
//输入的有向边数量
scanf("%d%d",&s,&t);
int i,u,v,cap;
for(i=;i<n;++i){
scanf("%d%d%d",&u,&v,&cap);
add(u,v,cap);
}
print();
int mx=maxflow(s,t);
printf("==============\n");
print();
printf("maxflow:%d\n",mx);
return ;
}

自己yy的fulkson最大流算法的更多相关文章

  1. Ford-Fulkerson 最大流算法

    流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...

  2. 算法9-5:最大流算法的Java代码

    残留网络 在介绍最大流算法之前先介绍一下什么是残留网络.残余网络的概念有点类似于集合中的补集概念. 下图是残余网络的样例. 上面的网络是原始网络.以下的网络是计算出的残留网络.残留网络的作用就是用来描 ...

  3. 海量数据挖掘MMDS week3:流算法Stream Algorithms

    http://blog.csdn.net/pipisorry/article/details/49183379 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  4. 基于.net的分布式系统限流组件(限流算法:令牌算法和漏斗算法)

    转载链接:https://www.cnblogs.com/vveiliang/p/9049393.html 1.令牌桶算法 令牌桶算法是比较常见的限流算法之一,大概描述如下: 1).所有的请求在处理之 ...

  5. 最大流算法-ISAP

    引入 最大流算法分为两类,一种是增广路算法,一种是预留推进算法.增广路算法包括时间复杂度\(O(nm^2)\)的EK算法,上界为\(O(n^2m)\)的Dinic算法,以及一些其他的算法.EK算法直接 ...

  6. 常用限流算法与Guava RateLimiter源码解析

    在分布式系统中,应对高并发访问时,缓存.限流.降级是保护系统正常运行的常用方法.当请求量突发暴涨时,如果不加以限制访问,则可能导致整个系统崩溃,服务不可用.同时有一些业务场景,比如短信验证码,或者其它 ...

  7. Cable TV Network 顶点连通度 (最大流算法)

    Cable TV Network 题目抽象:给出含有n个点顶点的无向图,给出m条边.求定点联通度   K 算法:将每个顶点v拆成 v'   v''  ,v'-->v''的容量为1.       ...

  8. 最大流算法(Edmons-Karp + Dinic 比较) + Ford-Fulkson 简要证明

    Ford-Fulkson用EK实现:483ms #include <cstdio> #include <cstring> #define min(x,y) (x>y?y: ...

  9. 最大流算法----(SAP 和 EK)

    EK算法的核心 反复寻找源点 s 到汇点 t 之间的增广路径,若有,找出增广路径上每一段的最小值delta,若无,则结束. 寻找增广路径时用BFS来找,并且更新残留网的值. 找到delta后,则使最大 ...

随机推荐

  1. FFmpeg-20160422-snapshot-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...

  2. effective OC2.0 52阅读笔记(一 熟悉Objective-C)

    第一章:熟悉Objective-C 1 了解objective-c语言的起源 总结:OC为C语言添加了面向对象的特性,是其超集.采用动态绑定的消息结构而非函数调用,也就是说,要在运行时才检查对象类型及 ...

  3. diff & pattch 命令

    基础知识 该命令的功能为逐行比较两个文本文件,列出其不同之处.它比comm命令完成更复杂的检查.它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序. 语法:diff ...

  4. IE的if条件Hack(兼容性)

    1. 〈!--[if !IE]〉〈!--〉 除IE外都可识别 〈!--〈![endif]--〉 2. 〈!--[if IE]〉 所有的IE可识别〈![endif]--〉 3. 〈!--[if IE 5 ...

  5. CSS3实现圆角效果

    利用border-radius属性可以给元素div,input元素等添加圆角效果 后跟 值为这个圆角的半径,即数值越大效果越明显 -webkit-border-top/bottom-left/righ ...

  6. mybatis 获取自增ID

    在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名. <inser ...

  7. HDU 5884 Sort -2016 ICPC 青岛赛区网络赛

    题目链接 #include <iostream> #include <math.h> #include <stdio.h> #include<algorith ...

  8. Httpsqs的安装以及安装过程错误的解决方法 转

    需求 :进行商品搜索的时候,要从索引中进行搜索,由于后台要更新商品和插入商品,当时考虑到了怎么来插入新的索引和更新索引的问题,通过讨论,大家决定用Httpsqs这个消息中间来通知插入新索引和删除索引最 ...

  9. mac VPN配置

    来自: http://www.eefocus.com/Kevin/blog/11-09/230878_53c71.html RSA的SecurID长的是这个样子滴: Mac里面,可以设置VPN, 方法 ...

  10. 通过颜色代码初始化UIColor

    #define UIColorFromHEX(rgbValue) [UIColor \ colorWithRed:((float)((rgbValue & 0xFF0000) >> ...