ZOJ3362 Beer Problem(最小费用任意流)
2024-08-30 02:37:23
题目大概说有n个城市,由m条无向边相连,每条边每天最多运送cap桶酒且其运送一桶的花费是cost。现在从1号城市开始出发运酒,供应到2到n号城市,这些城市的收购单价是price,问最大的盈利是多少。
。。。顺路AC
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
#define INF (1<<30)
#define MAXN 111
#define MAXM 111*222
struct Edge{
int u,v,cap,cost,next;
}edge[MAXM];
int head[MAXN];
int NV,NE,vs,vt; void addEdge(int u,int v,int cap,int cost){
edge[NE].u=u; edge[NE].v=v; edge[NE].cap=cap; edge[NE].cost=cost;
edge[NE].next=head[u]; head[u]=NE++;
edge[NE].u=v; edge[NE].v=u; edge[NE].cap=; edge[NE].cost=-cost;
edge[NE].next=head[v]; head[v]=NE++;
}
bool vis[MAXN];
int d[MAXN],pre[MAXN];
bool SPFA(){
for(int i=;i<NV;++i){
vis[i]=;
d[i]=INF;
}
vis[vs]=;
d[vs]=;
queue<int> que;
que.push(vs);
while(!que.empty()){
int u=que.front(); que.pop();
for(int i=head[u]; i!=-; i=edge[i].next){
int v=edge[i].v;
if(edge[i].cap && d[v]>d[u]+edge[i].cost){
d[v]=d[u]+edge[i].cost;
pre[v]=i;
if(!vis[v]){
vis[v]=;
que.push(v);
}
}
}
vis[u]=;
}
return d[vt]!=INF;
}
int MCMF(){
int res=;
while(SPFA()){
int flow=INF,cost=;
for(int u=vt; u!=vs; u=edge[pre[u]].u){
flow=min(flow,edge[pre[u]].cap);
}
for(int u=vt; u!=vs; u=edge[pre[u]].u){
edge[pre[u]].cap-=flow;
edge[pre[u]^].cap+=flow;
cost+=flow*edge[pre[u]].cost;
}
if(cost>=) break;
res+=cost;
}
return res;
}
int main(){
int n,m,a,b,c,d;
while(~scanf("%d%d",&n,&m)){
vs=; vt=n+; NV=vt+; NE=;
memset(head,-,sizeof(head));
for(int i=; i<=n; ++i){
scanf("%d",&a);
addEdge(i,vt,INF,-a);
}
while(m--){
scanf("%d%d%d%d",&a,&b,&c,&d);
addEdge(a,b,c,d);
addEdge(b,a,c,d);
}
printf("%d\n",-MCMF());
}
return ;
}
最新文章
- 移动Web初级入门
- Scalaz(22)- 泛函编程思维: Coerce Monadic Thinking
- 【codevs1227】 方格取数 2
- 使用TCMalloc优化OpenResty
- DOM笔记(九):引用类型、基本包装类型和单体内置对象
- R语言学习笔记:怎么从txt中读入数据
- JavaScript中style.left与offsetLeft的区别
- 一个神奇SQL引发的故障【转】
- servlet中的字符编码过滤器的使用
- 转: 谈JAVA_OPTS环境变量不起作用
- 移植Cocos2D到Android平台的原理
- 面试之路(18)-java的函数参数传递类型之值传递还是引用传递
- hibernate自定义校验Valid
- 六 java和Tomcat
- java-设计模式-索引
- TZOJ 2099 Sightseeing tour(网络流判混合图欧拉回路)
- Echars折线配置详解
- LeetCode69.x的平方根
- leetcode 两个排序的中位数 python
- 3143 二叉树的序遍历codevs
热门文章
- 淘宝(阿里百川)手机客户端开发日记第五篇 SharedPreferences使用详解
- C#装箱和拆箱(值类型和引用类型之间的转换)
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- HXOI 2014 PSet 4 Day 1 一模04日1 题解
- 夏令时 DST (Daylight Saving Time) java中的夏令时【转】
- 《ASP.NET1200例》高亮显示ListView中的数据行并自动切换图片
- debian下mysql主从配置
- kettle job如何利用java的反射机制获取执行的sql语句
- iOS 基于UIWebView的应用特点
- mysql cluster 运行的必备条件