uva10594(最小费用最大流)

题目的意思就就是首先给出点的个数,在给出边的个数,然后给出每条边的费用.

然后给出的两个数字,是要从点1运到点n的物品数量.

还有每条边的容量(所有边容量一样)


因为是无向图,所以我们用邻接表存,在用最小费用最大流的算法直接算出最小费用.

但如果算出来的最大流小于我们要运的数量,说明运不过去,,


ac代码:


#include<stdio.h>
#include<string.h>
#include<queue>
#define ll long long
using namespace std;
const ll INF = 1000000000000005;
const int N = 105;
const int M = 5005;
const int K = 20100;
ll cap[K];
ll flow[K];
ll cost[K];
ll nex[K];
ll first[M];
ll u[K];
ll v[K];
int p[N];
ll a[M];
ll b[M];
ll g[M];
ll n,m, num , maxcap;
ll c, f ;
int e;
void add(ll s , ll t ,ll c ,ll co) {
	u[e] = s;
	v[e] = t;
	nex[e] = first[u[e]];
	first[u[e]] = e;
	cap[e] = c;
	cost[e] = co;
	e++;
	u[e] = t;
	v[e] = s;
	nex
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值