POJ 2516 最小费用流
依然最小费用最大流模板题
建边麻烦了些
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <deque>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define INF 0x3f3f3f3f
#define MAXM 3005
#define MAXN 300
using namespace std; struct Edge
{
int y,c,w,ne;
}e[MAXM*]; int all,be[MAXN],n,m,k,x,y,w,ans,Mincost,Maxflow,s,t,q[MAXM*];
int supply[MAXN][MAXN],need[MAXN][MAXN];
int pre[MAXN],dis[MAXN];
bool vis[MAXN]; void init()
{
all=;
memset(be,-,sizeof(be));
}
void add(int x, int y, int c, int w)
{
e[all].y=y;e[all].c=c;e[all].w=w;
e[all].ne=be[x];
be[x]=all++; e[all].y=x;e[all].c=;e[all].w=-w;
e[all].ne=be[y];
be[y]=all++;
} bool spfa(int s, int t)
{
queue<int> q;
for(int i=; i<n+m+; i++)
{
dis[i]=INF;
vis[i]=;
pre[i]=-;
}
dis[s]=;
vis[s]=;
q.push(s);
while(!q.empty())
{
int u=q.front();
vis[u]=;
q.pop();
for(int i=be[u]; i!=-; i=e[i].ne)
{
int v=e[i].y;
if(e[i].c && dis[v]>dis[u]+e[i].w)
{
dis[v]=dis[u]+e[i].w;
pre[v]=i;
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
}
if(pre[t]==-) return ;
return ;
} void MincostMaxflow(int s, int t)
{
Mincost=Maxflow=;
while(spfa(s,t))
{
int minc=INF;
for(int i=pre[t]; i!=-; i=pre[e[i^].y])
if(minc>e[i].c) minc=e[i].c;
for(int i=pre[t]; i!=-; i=pre[e[i^].y])
{
e[i].c-=minc;
e[i^].c+=minc;
Mincost+=e[i].w*minc;
}
Maxflow+=minc;
}
} int main()
{
while(scanf("%d%d%d",&n,&m,&k)!=EOF && n && m && k)
{ for(int i=; i<n; i++)
for(int j=; j<k; j++)
scanf("%d",&need[i][j]);
for(int i=; i<m; i++)
for(int j=; j<k; j++)
scanf("%d",&supply[i][j]); s=m+n;
t=m+n+;
bool flag=;
ans=;
for(int tk=; tk<k; tk++)
{
init();
for(int i=; i<n; i++)
for(int j=; j<m; j++)
{
scanf("%d",&w);
add(j,i+m,INF,w);
}
if(flag)
{
for(int i=; i<m; i++)
add(s,i,supply[i][tk],);
for(int i=; i<n; i++)
add(m+i,t,need[i][tk],);
MincostMaxflow(s,t); for(int i=be[t]; i!=-; i=e[i].ne)
if(e[i^].c>) flag=;
if(flag) ans+=Mincost;
}
}
if(!flag) printf("-1\n");
else printf("%d\n",ans);
}
return ;
}
POJ 2516 最小费用流的更多相关文章
- POJ 2516 Minimum Cost (网络流,最小费用流)
POJ 2516 Minimum Cost (网络流,最小费用流) Description Dearboy, a goods victualer, now comes to a big problem ...
- Poj 2516 Minimum Cost (最小花费最大流)
题目链接: Poj 2516 Minimum Cost 题目描述: 有n个商店,m个仓储,每个商店和仓库都有k种货物.嘛!现在n个商店要开始向m个仓库发出订单了,订单信息为当前商店对每种货物的需求 ...
- 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 每次要跑K次费用流
传送门:poj.org/problem?id=2516 题意: 有m个仓库,n个买家,k个商品,每个仓库运送不同商品到不同买家的路费是不同的.问为了满足不同买家的订单的最小的花费. 思路: 设立一个源 ...
- POJ 2516:Minimum Cost(最小费用流)
https://vjudge.net/problem/11079/origin 题意:有N个商店和M个供应商和K种物品,每个商店每种物品有一个需求数,每个供应商每种物品有一个供应量,供应商到商店之间的 ...
- POJ 2516 Minimum Cost 最小费用流
题目: 给出n*kk的矩阵,格子a[i][k]表示第i个客户需要第k种货物a[i][k]单位. 给出m*kk的矩阵,格子b[j][k]表示第j个供应商可以提供第k种货物b[j][k]单位. 再给出k个 ...
- POJ 2516 Minimum Cost 最小费用流 难度:1
Minimum Cost Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 13511 Accepted: 4628 Des ...
- 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(拆点+KM完备匹配)
题目链接:http://poj.org/problem?id=2516 题目大意: 第一行是N,M,K 接下来N行:第i行有K个数字表示第i个卖场对K种商品的需求情况 接下来M行:第j行有K个数字表示 ...
随机推荐
- When to use Class.isInstance() & when to use instanceof operator?
I think the official documentation gives you the answer to this one (albeit in a fairly nonspecific ...
- 在云服务器搭建WordPress博客(二)使用xampp并解决端口冲突问题
要搭建一台外界可以访问的服务器,就必须有对应的服务器环境.在这里我用的xampp集成环境(我是菜鸟级......),xampp集成了PHP+Apache+MySQL+perl,安装方便,不用再特意去设 ...
- input框中value与placeholder的区别
value:是input中预先放置的文字,当鼠标点击之后依然存在,是值的一部分. placeholder:是input中输入位置的默认显示的文字,鼠标点击后仍旧显示,但不属于值,类似于背景.
- win下Maven安装和基本设置
注:本文介绍 Windows 平台上 Maven 的安装.Maven 3 需要运行在 JDK1.4 以上的版本上. 非原创:原创地址 http://www.ibm.com/developerworks ...
- 【转】KM匹配题集
转自:http://blog.csdn.net/shahdza/article/details/7779324 [HDU]2255 奔小康赚大钱 模板题★1533 Going Home 模板题★242 ...
- [转载]关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...
- 项目中libevent几个问题
几个问题: .libevent到底用的是select还是iocp,然后是如何突破64限制的 typedef struct fd_set { u_int fd_count; /* how many ar ...
- hibernate Session
转: http://kayo.iteye.com/blog/204143 Session 接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate 中 ...
- CentOS 6.6安装LAMP和Subversion服务器
目标:在CentOS 6.6上安装LAMP,并安装最新版1.8.*的Subversion服务器,和Subversion权限管理前端iF.svnadmin. 安装步骤: 安装新一些版本LAMP步骤 1. ...
- MATERIALIZED VIEW
Oracle的实体化视图提供了强大的功能,可以用在不同的环境中,实体化视图和表一样可以直接进行查询.实体化视图可以基于分区表,实体化视图本身也可以分区. 主要用于预先计算并保存表连接或聚集等耗时较多的 ...