最小费用流
来源:互联网 发布:手机淘宝1元夺宝在哪 编辑:程序博客网 时间:2024/06/05 09:09
const int MAXN = 200010;const int MAXM = 1200010;const int INF = 0x3f3f3f3f;struct Edge { int to,next,cap,flow,cost;} edge[MAXM];int head[MAXN],tol;int pre[MAXN],dis[MAXN];bool vis[MAXN];int N;//节点总个数,节点编号从0~N-1void init(int n){ N = n; tol = 0; memset(head,-1,sizeof(head));}void addedge(int u,int v,int cap,int cost){ edge[tol].to = v; edge[tol].cap = cap; edge[tol].cost = cost; edge[tol].flow = 0; edge[tol].next = head[u]; head[u] = tol++; edge[tol].to = u; edge[tol].cap = 0; edge[tol].cost = -cost; edge[tol].flow = 0; edge[tol].next = head[v]; head[v] = tol++;}bool spfa(int s,int t){ queue<int>q; for(int i = 0; i < N; i++) { dis[i] = INF; vis[i] = false; pre[i] = -1; } dis[s] = 0; vis[s] = true; q.push(s); while(!q.empty()) { int u = q.front(); q.pop(); vis[u] = false; for(int i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].to; if(edge[i].cap > edge[i].flow && dis[v] > dis[u] + edge[i].cost ) { dis[v] = dis[u] + edge[i].cost; pre[v] = i; if(!vis[v]) { vis[v] = true; q.push(v); } } } } if(pre[t] == -1)return false; else return true;}//返回的是最大流,cost存的是最小费用int minCostMaxflow(int s,int t,int &cost,int n){ int flow = 0; cost = 0; while(spfa(s,t)) { if(flow>1) break; int Min = INF; for(int i = pre[t]; i != -1; i = pre[edge[i^1].to]) { if(Min > edge[i].cap - edge[i].flow) Min = edge[i].cap - edge[i].flow; } for(int i = pre[t]; i != -1; i = pre[edge[i^1].to]) { edge[i].flow += Min; edge[i^1].flow -= Min; cost += edge[i].cost * Min; } flow += Min;// cout<<flow<<endl; } return flow;}
阅读全文
0 0
- 最小费用最小流uva10746
- 最小费用最大流
- 最小费用最大流
- 最小费用最大流
- 最小费用最大流
- 最小费用流模版
- 【最小费用最大流】
- 最小费用流
- 最小费用最大流
- 最小费用最大流
- Intervals----最小费用流
- 最小费用最大流
- 最小费用最大流
- 最小费用最大流
- 最小费用最大流
- hdu1853 最小费用流
- hdu1533 最小费用流
- hdu3667 最小费用流
- MSSQL Value 2017-09-06 08:32 cannot be converted to TIMESTAMP.
- BOA学习记录2
- JAVA调用C#webservice,返回byte[],写入新文件
- 【Unity】Unity 5 Statistics 窗口
- Python调用Ansible 2.0 API执行playbook
- 最小费用流
- Android基础之Process
- Informatica 中文字符
- UVA 1626 Brackets sequence
- iOS 11 将于9月19日正式发布,一文带你了解它的那些特性
- Java输入输出流
- Hadoop 从windows环境下在eclipse上提交mapreducer程序过程
- 线程阻塞与唤醒
- 面向对象三大基本特性,五大基本原则