POJ 2516 Minimum Cost [最小费用最大流]
题意略;
思路:
这题比较坑的地方是把每种货物单独建图分开算就ok了。
#include<stdio.h>
#include<queue>
#define MAXN 500
#define MAXM 10002*4
#define INF 10000000
using namespace std;
//起点编号必须最小,终点编号必须最大
bool vis[MAXN]; //spfa中记录是否在队列里边
char pho[][];
int max_flow;
struct point{
int x,y;
}man[],house[];
struct edge{
edge *next,*op; //op是指向反向边
int t,c,v; //t下一个点编号,c容量,v权值
}ES[MAXM],*V[MAXN]; //ES边静态邻接表,V点的编号
struct st{
int num[];
};
st from[],to[];
int N,M,S,T,EC=-; //S源点最小,T汇点最大,EC当前边数
int demond[MAXN],sp[MAXN],prev[MAXN]; //spSPFA中记录距离,prev记录上一个点路径
edge *path[MAXN]; //与prev同步记录,记录到上一条边
void addedge(int a,int b,int v,int c=INF){
//printf("* %d %d %d %d\n",a,b,v,c);
edge e1={V[a],,b,c,v},e2={V[b],,a,,-v};
ES[++EC]=e1;V[a]=&ES[EC];
ES[++EC]=e2;V[b]=&ES[EC];
V[a]->op=V[b];V[b]->op=V[a];
}
bool SPFA(){
int u,v;
for(u=S;u<=T;u++){
sp[u]=INF;
}
queue<int>q;
prev[S]=-;
q.push(S);
sp[S]=;
vis[S]=;
while(!q.empty()){
u=q.front();
vis[u]=;
q.pop();
for(edge *k=V[u];k;k=k->next){
v=k->t;
if(k->c>&&sp[u]+k->v<sp[v]){
sp[v]=sp[u]+k->v;
prev[v]=u;
path[v]=k;
if(vis[v]==){
vis[v]=;
q.push(v);
}
}
}
}
return sp[T]!=INF;
}
int argument(){
int i,cost=INF,flow=;
edge *e;
for(i=T;prev[i]!=-;i=prev[i]){
e=path[i];
if(e->c<cost)cost=e->c;
}
max_flow+=cost;
for(int i=T;prev[i]!=-;i=prev[i]){
e=path[i];
e->c-=cost;e->op->c+=cost;
flow+=e->v*cost;
}
return flow;
}
int maxcostflow(){
int Flow=;
while(SPFA()){
Flow+=argument();
}
return Flow;
}
bool init(){
int n,m,k;
bool ok=;
long long ans=;
scanf("%d%d%d",&n,&m,&k);
if(n==&&m==&&k==)return ;
for(int i=;i<n;i++){
for(int j=;j<k;j++){
scanf("%d",&to[i].num[j]);
}
}
for(int i=;i<m;i++){
for(int j=;j<k;j++){
scanf("%d",&from[i].num[j]);
}
}
for(int i=;i<k;i++){
EC=-;
max_flow=;
for(int j=;j<=MAXN;j++){
V[j]=NULL;
}
for(int j=;j<n;j++){
for(int w=;w<m;w++){
int tmp;
scanf("%d",&tmp);
addedge(w+,m+j+,tmp);
}
}
for(int j=;j<m;j++){
addedge(,j+,,from[j].num[i]);
}
int sum=;
for(int j=;j<n;j++){
addedge(j++m,m+n+,,to[j].num[i]);
sum+=to[j].num[i];
}
S=;T=n+m+;
ans+=maxcostflow();
if(max_flow!=sum)ok=;
}
if(!ok)ans=-;
printf("%I64d\n",ans);
return ;
}
int main(){
while(init());
return ;
}
POJ 2516 Minimum Cost [最小费用最大流]的更多相关文章
- Poj 2516 Minimum Cost (最小花费最大流)
题目链接: Poj 2516 Minimum Cost 题目描述: 有n个商店,m个仓储,每个商店和仓库都有k种货物.嘛!现在n个商店要开始向m个仓库发出订单了,订单信息为当前商店对每种货物的需求 ...
- POJ2516:Minimum Cost(最小费用最大流)
Minimum Cost Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 19088 Accepted: 6740 题目链 ...
- POJ2516 Minimum Cost —— 最小费用最大流
题目链接:https://vjudge.net/problem/POJ-2516 Minimum Cost Time Limit: 4000MS Memory Limit: 65536K Tota ...
- Minimum Cost(最小费用最大流)
Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In his s ...
- POJ 2516 Minimum Cost (最小费用最大流)
POJ 2516 Minimum Cost 链接:http://poj.org/problem?id=2516 题意:有M个仓库.N个商人.K种物品.先输入N,M.K.然后输入N行K个数,每一行代表一 ...
- POJ 2516 Minimum Cost (网络流,最小费用流)
POJ 2516 Minimum Cost (网络流,最小费用流) Description Dearboy, a goods victualer, now comes to a big problem ...
- POJ - 2516 Minimum Cost(最小费用最大流)
1.K种物品,M个供应商,N个收购商.每种物品从一个供应商运送到一个收购商有一个单位运费.每个收购商都需要K种物品中的若干.求满足所有收购商需求的前提下的最小运费. 2.K种物品拆开来,分别对每种物品 ...
- POJ 2516 Minimum Cost(最小费用流)
Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In his s ...
- POJ 2516 Minimum Cost
每个物品分开做最小费用最大流. #include<cstdio> #include<cstring> #include<cmath> #include<vec ...
随机推荐
- RMAN备份与恢复之不完全恢复
要点:对于RMAN的不完全恢复,有如下步骤: 1)加载数据到mount状态(建议恢复前先做备份) 2)为高并发分配多个通道 3)还原所有(所需)的数据文件 4)使用until time,until s ...
- Servlet程序访问的流程
方式一: jsp: <font color="red">${ msg }</font> <form action="/personal/re ...
- [java]序列化框架性能对比(kryo、hessian、java、protostuff)
序列化框架性能对比(kryo.hessian.java.protostuff) 简介: 优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Pro ...
- 程序员书单_J2EE专题
Enterprise JavaBeans 3.0中文版(第5版) http://download.csdn.net/detail/shenzhq1980/9104015 J2EE设计模式 http:/ ...
- php.ini xdebug
[XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug.dll"xdebug.profiler_append = 0xdebug ...
- Return 和 Break 的区别
前段日子发布的负面情绪太多了,哦哦,其实我需要的是努力,努力提高自己的真实能力.经历了好多的鄙视否定,我已经没有最初那么敏感,心态平和了许多.我没有借口说基础不好了,一年了,要努力的话,那么我应该不会 ...
- spring4.0整合mongodb3.0.4项目实践(用户验证)
我们的项目用到了spring框架和mongdb数据库,随着mongodb升级到3.0已有半年时间,我们也开始随之升级,但是3.0的用户验证有所更改,导致原来的很多配置无法再用. 经过几天的尝试后,终于 ...
- FreeDroid开发过程中遇到的一些问题
http://bestzp.com/?p=83 Android Studio混淆: build.gradle中 1 2 3 4 5 6 buildTypes { release { ...
- mysql创建表与索引
-- ---------------------------- -- 商品属性表 -- AUTO_INCREMENT=1为设置了自增长的字段设置起点,1为起点 -- ENGINE选择:MyISAM类型 ...
- OAF_OAF Debug And Log调试和记录工具的详解(案例)
2014-06-16 Created By BaoXinjian