最近正好需要用到最小费用最大流,所以网上就找了这方面的代码,动手写了写,先在博客里存一下~

代码的题目是POJ2135-Farm Tour

需要了解算法思想的,可以参考下面一篇文章,个人觉得有最大流基础的童鞋,看了基本就能看懂了,通俗易懂。

https://www.cnblogs.com/gtarcoder/p/4890739.html

#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm> #define E 50000
#define maxn 1005
#define INF 0x3f3f3f3f
using namespace std;
struct Edge
{
int u,v,flow,cost,next;
}edge[E]; int tot,head[maxn],pre[maxn],dist[maxn],vis[maxn];
int n,m;
void add(int u,int v,int flow,int cost)//flow为流量 cost为费用
{
edge[tot].u=u;
edge[tot].v=v;
edge[tot].flow=flow;
edge[tot].cost=cost;
edge[tot].next=head[u];
head[u]=tot++;
} void addEdge(int u,int v,int flow,int cost){
add(u,v,flow,cost);
add(v,u,,-cost);
} bool SPFA(int s,int t,int n)
{
int v,tmp;
queue<int> q;
for(int i=;i<=n;i++)
{
pre[i]=-;
vis[i]=;
dist[i]=INF;
}
vis[s]=;
dist[s]=;
q.push(s);
while(!q.empty())
{
tmp=q.front();
q.pop();
vis[tmp]=;
for(int k=head[tmp];k!=-;k=edge[k].next)
if(edge[k].flow){
v=edge[k].v;
if(dist[v]>dist[tmp]+edge[k].cost){
dist[v]=dist[tmp]+edge[k].cost;
pre[v]=k; //存储对应的边
if(!vis[v]){
vis[v]=;
q.push(v);
}
}
}
}
return dist[t]!=INF;
} int mcmf(int s,int t,int n)
{
int flow=INF,ans=;
while(SPFA(s,t,n))
{
ans+=dist[t];
for(int k=pre[t];k!=-;k=pre[edge[k].u])
flow=min(flow,edge[k].flow);
for(int k=pre[t];k!=-;k=pre[edge[k].u])
{
edge[k].flow-=flow;
edge[k^].flow+=flow;
}
}
return ans;
} void init(){
for(int i=;i<maxn;i++)
head[i]=-;
tot=;
}
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int s=,t=n+;
init();
for(int i=;i<m;i++){
int u,v,c;
scanf("%d %d %d",&u,&v,&c);
addEdge(u,v,,c);
addEdge(v,u,,c);
}
addEdge(s,,,);
addEdge(n,t,,);
int ans=mcmf(s,t,n+);
printf("%d\n",ans);
return ;
}

最小费用最大流模板(POJ 2135-Farm Tour)的更多相关文章

  1. 网络流(最小费用最大流):POJ 2135 Farm Tour

    Farm Tour Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: ...

  2. 最小费用最大流模板 poj 2159 模板水题

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15944   Accepted: 8167 Descr ...

  3. POJ 2135 Farm Tour (网络流,最小费用最大流)

    POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...

  4. poj 2135 Farm Tour 【无向图最小费用最大流】

    题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...

  5. 图论算法-最小费用最大流模板【EK;Dinic】

    图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector ...

  6. HDU3376 最小费用最大流 模板2

    Matrix Again Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)To ...

  7. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

  8. 最大流 && 最小费用最大流模板

    模板从  这里   搬运,链接博客还有很多网络流题集题解参考. 最大流模板 ( 可处理重边 ) ; const int INF = 0x3f3f3f3f; struct Edge { int from ...

  9. POJ 2135 Farm Tour (最小费用最大流模板)

    题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...

  10. POJ 2135.Farm Tour 消负圈法最小费用最大流

    Evacuation Plan Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4914   Accepted: 1284   ...

随机推荐

  1. Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案

    在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may ...

  2. 关于html5 audio 标签在ios系统上不能正常自动播放的解决办法

    由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio, 因此我们通过一个用户交互事件来主动 play 一下 audio. ...

  3. scikit-learn决策树的python实现以及作图

    decsion tree(决策树) 其中每个内部结点表示在一个属性上的测试,每个分支代表一个属性的输出,而每个树叶结点代表类或类的分布.树的最顶层是根节点 连续变量要离散化 机器学习中分类方法的一个重 ...

  4. B. A Leapfrog in the Array

    http://codeforces.com/problemset/problem/949/B Dima is a beginner programmer. During his working pro ...

  5. helm-locate 使用 everything

    emacs里不需任何设置,只要在电脑的环境变量里加上everything的目录即可. 1.下载es.exe (http://www.voidtools.com/es.zip) 2.把解压出的es.ex ...

  6. 使用Jquery Viewer 展示图片信息

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  7. 实现一个自定义event事件,包括on ,off,trigger,once

    on监听事件,off取消事件 ,trigger触发事件,once只执行一次 class Event { constructor() { this.handlers = {};//记录所有的事件以及处理 ...

  8. pdf转中文txt

    最近项目需要实现根据关键字搜索pdf内容,实现思路就是提取pdf文本,然后进行索引. 工具上选择: IText 4.16之后采用agpl License,不能用作商用,而且转换中文会有乱码问题, pd ...

  9. TMS320VC5509驱动TLV32AIC23

    1. 本次使用LINE_IN作为输入,LINE_OUT作为输出(可以插耳机),代码如下,代码经过测试,没问题,不过发现了一个很奇怪的问题没搞明白 /************************** ...

  10. sqlyog 可视化查看数据库关系并创建外键

    + 一个架构设计器,把表拖进来即可查看数据库关系 如果要建立外键,需要在两个要被建立的外键之间进行操作(经过验证不需要都为主键),然后从用鼠标把子外键拖到父外键中,就可以关联上了. 参考: https ...