博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【网络流】 HDU 3157 Crazy Circuits 有源汇上下界最小流
阅读量:4306 次
发布时间:2019-06-06

本文共 1932 字,大约阅读时间需要 6 分钟。

最小流解法:先按照【上下界可行流】建图 但先不建end --> star  边

MAXFlow=按新建的源点和汇点跑一次最大流

再建end->star的边

MAXFlow+=再按新建的源点和汇点跑一次最大流

如果MAXFlow == 新建源点流出的sum值

则 有ans =  end->star的流量

否则无ans

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std;#include
#include
#include
#include
#include
#include
#include
;#define cler(arr, val) memset(arr, val, sizeof(arr))#define FOR(i,a,b) for(int i=a;i<=b;i++)#define IN freopen ("in.txt" , "r" , stdin);#define OUT freopen ("out.txt" , "w" , stdout);typedef long long LL;const int MAXN = 100;const int MAXM = 1500;const int INF = 0x3f3f3f3f;//const int INF = 22222;const int mod = 1000000007;struct Edge{ int to,next,cap,flow;} edge[MAXM];int tol,head[MAXN];int gap[MAXN],dep[MAXN],cur[MAXN];void init(){ tol=0; cler(head,-1);}void addedge(int u,int v,int w,int rw=0){ edge[tol].to=v,edge[tol].cap=w,edge[tol].flow=0,edge[tol].next=head[u]; head[u]=tol++; edge[tol].to=u,edge[tol].cap=rw,edge[tol].flow=0,edge[tol].next=head[v]; head[v]=tol++;}int Q[MAXN];void BFS(int star,int end){ cler(dep,-1); cler(gap,0); gap[0]=-1; int front= 0, rear = 0; dep[end]=0; Q[rear++] = end; while(front!= rear) { int u=Q[front++]; for(int i = head[u]; i!=-1; i=edge[i].next) { int v=edge[i].to; if(dep[v]!= -1) continue; Q[rear++]= v; dep[v]=dep[u]+1; gap[dep[v]]++; } }}int S[MAXN];int sap(int star,int end,int N){ BFS(star,end); memcpy(cur,head,sizeof(head)); int top=0, u=star,ans=0; while(dep[star]
edge[S[i]].cap-edge[S[i]].flow) { Min=edge[S[i]].cap-edge[S[i]].flow; inser=i; } for(int i=0; i
0) { addedge(Star,i,low[i]); sum+=low[i]; } else addedge(i,End,-low[i]); } int maxflow=sap(Star,End,n+4); addedge(end,star,INF); maxflow+=sap(Star,End,n+4); if(maxflow!=sum) printf("impossible\n"); else printf("%d\n",edge[tol-2].flow); } return 0;}

转载于:https://www.cnblogs.com/kewowlo/p/4088336.html

你可能感兴趣的文章
查看端口占用
查看>>
windows+caffe(三)——求取图片的均值
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别(转)
查看>>
李国浩20179307第二周作业
查看>>
ES5 getter setter
查看>>
超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
查看>>
python中通过元类(TYPE)简单实现对象关系映射(ORM)
查看>>
Linux vi/vim
查看>>
C#用Zlib压缩或解压缩字节数组
查看>>
Java多线程_阻塞队列
查看>>
exceldatareader 流操作excle
查看>>
自定义GrildView实现单选功能
查看>>
H5横向滚动提示
查看>>
机器学习sklearn的快速使用--周振洋
查看>>
hive实现not in
查看>>
数据类型转化
查看>>
Vue通过build打包后 打开index.html页面是空白的
查看>>
算法整理
查看>>
从此记录
查看>>
Mybatis 动态传sql可以查询表名,任意表名,不固定字段的个数返回未定义的类型以及增删改...
查看>>