添加超级源点(与点1之间的边容量为2,权值为0)和超级汇点(与点N之间的边容量为2,权值为0),求流量为2的最小费用流。注意是双向边。

#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const long long INF = 0x3f3f3f3f3f3f3f3f;
typedef long long ll;
typedef pair<ll,int> P;
struct edge
{
int to,cap;
ll cost;
int rev;
};
int V,E;
vector<edge> G[1005];
ll h[1005];
ll dist[1005];
int prevv[1005];
int preve[1005];
void add_edge(int from,int to,int cap,ll cost)
{
edge e;
e.to = to;
e.cap = cap;
e.cost = cost;
e.rev = G[to].size();
G[from].push_back(e);
e.to = from;
e.cap = 0;
e.cost = -cost;
e.rev = G[from].size() - 1;
G[to].push_back(e);
} ll min_cost_flow(int s,int t,int f)
{
ll res = 0;
fill(h,h + V,0);
while(f > 0)
{
priority_queue <P,vector <P>,greater<P> >que;
fill(dist,dist + V,INF);
dist[s] = 0;
que.push(P(0,s));
while(!que.empty())
{
P p = que.top();
que.pop();
int v = p.second;
if(dist[v] < p.first)
{
continue;
}
for(int i = 0;i < G[v].size();i ++)
{
edge & e = G[v][i];
if(e.cap > 0 && dist[e.to] > dist[v] + e.cost + h[v] - h[e.to])
{
dist[e.to] = dist[v] + e.cost + h[v] - h[e.to];
prevv[e.to] = v;
preve[e.to] = i;
que.push(P(dist[e.to],e.to));
}
}
}
if(dist[t] == INF)
{
return -1;
}
for(int v = 0;v < V;v ++)
{
h[v] += dist[v];
}
int d = f;
for(int v = t;v != s;v = prevv[v])
{
d = min(d,G[prevv[v]][preve[v]].cap);
}
f -= d;
res += d * h[t];
for(int v = t; v != s; v = prevv[v])
{
edge & e = G[prevv[v]][preve[v]];
e.cap -= d;
G[v][e.rev].cap += d;
}
}
return res;
}
int main()
{
int a,b;
ll c;
cin >> V >> E; for(int i = 0;i < E;i ++)
{
scanf("%d%d%lld",&a,&b,&c);
add_edge(a,b,1,c);
add_edge(b,a,1,c);
}
add_edge(0,1,2,0);
add_edge(V,V + 1,2,0);
V += 2;
cout << min_cost_flow(0,V - 1,2) << endl;
return 0;
}

  

poj2135 最小费用流的更多相关文章

  1. poj2135最小费用流

    裸题,就是存个模板 最小费用流是用spfa求解的,目的是方便求解负环,spfa类似于最大流中的bfs过程 #include<map> #include<set> #includ ...

  2. [poj2135]Farm Tour(最小费用流)

    解题关键:最小费用流 代码一:bellma-ford $O(FVE)$  bellman-ford求最短路,并在最短路上增广,速度较慢 #include<cstdio> #include& ...

  3. poj2135(简单的最小费用流问题)

    题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  4. POJ2195 最小费用流

    题目:http://poj.org/problem?id=2195 处理出每个人到每个门的曼哈顿距离,分别建立容量为1费用为曼哈顿距离的边,在源点和每个人人之间建立容量为1费用为0的边,在门和汇点之间 ...

  5. HDU 4067 hdoj 4067 Random Maze 最小费用流

    给出n个点,m条边,入口s和出口t,对于每条边有两个值a,b,如果保留这条边需要花费:否则,移除这条边需要花费b. 题目要求用最小费用构造一个有向图满足以下条件: 1.只有一个入口和出口 2.所有路都 ...

  6. POJ 2516:Minimum Cost(最小费用流)

    https://vjudge.net/problem/11079/origin 题意:有N个商店和M个供应商和K种物品,每个商店每种物品有一个需求数,每个供应商每种物品有一个供应量,供应商到商店之间的 ...

  7. POJ-2175 Evacuation Plan 最小费用流、负环判定

    题意:给定一个最小费用流的模型,根据给定的数据判定是否为最优解,如果不为最优解则给出一个比给定更优的解即可.不需要得出最优解. 解法:由给定的数据能够得出一个残图,且这个图满足了最大流的性质,判定一个 ...

  8. Going Home (hdu 1533 最小费用流)

    集训的图论都快结束了,我才看懂了最小费用流,惭愧啊. = = 但是今天机械键盘到了,有弄好了自行车,好高兴\(^o^)/~ 其实也不是看懂,就会套个模板而已.... 这题最重要的就是一个: 多组输入一 ...

  9. POJ 2195 Going Home 最小费用流 裸题

    给出一个n*m的图,其中m是人,H是房子,.是空地,满足人的个数等于房子数. 现在让每个人都选择一个房子住,每个人只能住一间,每一间只能住一个人. 每个人可以向4个方向移动,每移动一步需要1$,问所有 ...

随机推荐

  1. Java笔记(七)

    File类: import java.io.File; import java.io.IOException; public class Demo{ public static void main(S ...

  2. SDOI2017 Round1 Day2 题解

    T2好厉害啊……AK不了啦……不过要是SCOI考这套题就好了240保底. BZOJ4819 新生舞会 模板题,分数规划+二分图最大权匹配. 费用流跑得过,可以不用KM. UPD:分数规划用迭代跑得飞快 ...

  3. PowerDesigner 把Comment写到name中 和把name写到Comment中

    在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文.Name用来显 示,Code在代码中使用,但Comment中的文字会保 ...

  4. 洛谷P4719 动态DP —— 动态DP(树剖+矩乘)

    题目:https://www.luogu.org/problemnew/show/P4719 感觉这篇博客写得挺好:https://blog.csdn.net/litble/article/detai ...

  5. [置顶] 谈EXPORT_SYMBOL使用

    转自:http://blog.csdn.net/macrossdzh/article/details/4601648 EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static ...

  6. sybase SQL记录

    在一个表中复制一行,主键是MLID ';

  7. Flutter实战视频-移动电商-65.会员中心_订单区域UI布局

    65.会员中心_订单区域UI布局 我的订单区域 member.dart写我的标题的方法 布局使用瓦片布局 先做修饰,decoration颜色的背景,下边线的样式 //我的订单标题 Widget _or ...

  8. Flutter实战视频-移动电商-66.会员中心_编写ListTile通用方法

    66.会员中心_编写ListTile通用方法 布局List里面嵌套一个ListTile的布局效果 里面有很多条记录,以后可能还会增加,所以这里我们做一个通用的组件 通用组件方法 这里使用Column布 ...

  9. CCF 201512-1 数位之和 (水题)

    问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整数n. 输出格式 输出一个整数,表示答案. 样例输入 20151220 样例输出 13 样例说明 20151220的各位数字 ...

  10. throw UnsupportedOperationException

    package org.usc.action; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...