自己yy的fulkson最大流算法
2024-10-15 21:48:56
#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 ;
}
最新文章
- 移动wap隐藏的坑
- AFNETWorking 不支持中文URL请求
- Java中流的概念
- linux安全
- C扩展 从共享内存shm到memcache外部内存
- String中的Indexof,LastIndexOf, Indexofany,LastIndexOfAny 的区别
- 分割gbk中文出现乱码的问题解决
- webpack 多入口配置
- canvas小球动画原理
- java四则运算生成器
- 201521123026 《Java程序设计》第5周学习总结
- BZOJ 4259: 残缺的字符串 [FFT]
- [cacti]nginx+php+cacti+mysql+php-fpm 安装小记
- Windows PowerShell 入門(3)-スクリプト編
- Beyond-Compare 4 -linux 破解
- Gorm使用详解
- Linux下性能调试工具运维笔记
- 内置函数id,返回内存地址
- java工具类POI导出word
- 2991:2011 求2011^n的后四位。
热门文章
- 解决VM虚拟机MAC OS X 10.10.x的卡顿问题
- alv中编辑的时候quan字段小数位数被截取掉
- 【python】正则中的group()
- 【mongo】Can&#39;t take a write lock while out of disk space错误
- orace 取昨天凌晨的日期
- ASIHTTPRequest详解 [经典3]
- 常用邮箱的服务器(SMTP/POP3)地址和端口总结
- Android笔记:菜单
- September 8th 2016 Week 37th Thursday
- Java使用正则表达式解析LRC歌词文件