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

代码的题目是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. selenium中嵌套iframe的切换

    前言:适用于多级iframe操作 1.普通的切换iframe from selenium import webdriver driver = webdriver.Firefox() driver.sw ...

  2. http协议cookie结构分析

    Http协议中Cookie详细介绍   Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失 ...

  3. Angular动态表单生成(七)

    动态表单生成之拖拽生成表单(上) 这个功能就比较吊炸天了,之前的六篇,都是ng-dynamic-forms自带的功能,可能很多的说明官方的文档都已经写了,我只是个搬运工,而在这篇文章中,我将化身一个工 ...

  4. typename在C++中的用法

    . //在C++中typename一般用来声明模板的模板参数(template parameter): template<typename T> class X; //T是一个模板参数 . ...

  5. java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码

    官网 http://www.fhadmin.org/D 集成安全权限框架shiro  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...

  6. centos7.4安装redis以及配置外网访问

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@VM_34_108_c ...

  7. # 20155207王雪纯 实验一 逆向与Bof基础

    20155207王雪纯 实验一 逆向与Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...

  8. mfc 形式参数初始化

    初始化函数形参 int add(int a,int b) { return a+b; } add(,); ,,char*s=NULL) { printf("a=%d,b=%d,c=%d\n& ...

  9. 4513: [Sdoi2016]储能表

    4513: [Sdoi2016]储能表 链接 分析: 数位dp. 横坐标和纵坐标一起数位dp,分别记录当前横纵坐标中这一位是否受n或m的限制,在记录一维表示当前是否已经大于k了. 然后需要两个数组记录 ...

  10. spark-submit python 程序,"/home/.python-eggs" permission denied 问题解决

    问题描述,spark-submit 用 yarn 模式提交一个python 脚本运行程序,运行到需要分布式的部分,即map/mapPartition等等RDD的时候,或者actor RDD的时候,报错 ...