这题意恶心得我百度了。看小悠写的看懂的*_*

各个商品的运输的代价计算是独立的,所以可以将他们分别处理

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int INF=0x7f7f7f7f;
const int maxn=100008;
const int maxm=58;
struct fuck{int u,v,cap,next,cost;
}edge[maxn];
int head[maxm<<4];
int tol;
int mpn[maxm][maxm],mpm[maxm][maxm],mpcost[maxm][maxm][maxm];
void init()
{tol=0;memset(head,-1,sizeof(head));
}
void addedge(int u,int v,int w,int c)
{edge[tol].u=u;edge[tol].v=v;edge[tol].cap=w;edge[tol].next=head[u];edge[tol].cost=c;head[u]=tol++;edge[tol].u=v;edge[tol].v=u;edge[tol].cap=0;edge[tol].next=head[v];edge[tol].cost=-c;head[v]=tol++;
}
int micost,max_flow,last;
int dis[maxm<<4],pre[maxn<<4];
bool vis[maxm<<4];
bool spfa(int sour,int sink)
{queue<int>    q;q.push(sour);memset(vis,false,sizeof(vis));memset(dis,INF,sizeof(dis));dis[sour]=0;vis[sour]=true;pre[sour]=0;int u,v,i;while(!q.empty()){u=q.front();q.pop();vis[u]=false;for(i=head[u];i!=-1;i=edge[i].next){v=edge[i].v;if(edge[i].cap>0&&dis[v]>dis[u]+edge[i].cost){dis[v]=dis[u]+edge[i].cost;pre[v]=i;if(!vis[v]){q.push(v);vis[v]=true;}}}}if(dis[sink]>=INF)    return false;return true;
}
void mincost_flow(int sour,int sink)
{max_flow=0;micost=0;int i;while(spfa(sour,sink)){int fl=INF;for(i=sink;i!=sour;i=edge[pre[i]].u)if(fl>edge[pre[i]].cap)fl=edge[pre[i]].cap;for(i=sink;i!=sour;i=edge[pre[i]].u){edge[pre[i]].cap-=fl;edge[pre[i]^1].cap+=fl;}max_flow+=fl;micost+=dis[sink]*fl;}
}
int main()
{int i,j,k,jj,n,m,u,v,w;while(scanf("%d%d%d",&n,&m,&k)==3){if(n==0&&m==0&&k==0)    break;bool flag=true;int ans=0;for(i=1;i<=n;i++)for(j=1;j<=k;j++)scanf("%d",&mpn[i][j]);for(i=1;i<=m;i++)for(j=1;j<=k;j++)scanf("%d",&mpm[i][j]);for(jj=1;jj<=k;jj++)for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&mpcost[jj][i][j]);for(i=1;i<=k;i++){init();int sum=0;for(j=1;j<=n;j++)//lingshoushangif(mpn[j][i]>0){addedge(j,n+m+1,mpn[j][i],0);sum+=mpn[j][i];}for(j=1;j<=m;j++)//shangjiaif(mpm[j][i]>0)addedge(0,j+n,mpm[j][i],0);int sour=0,sink=n+m+1;for(j=1;j<=n;j++){if(mpn[j][i]>0)for(jj=1;jj<=m;jj++)if(mpm[jj][i]>0)addedge(jj+n,j,mpm[jj][i],mpcost[i][j][jj]);}last=sour+1;mincost_flow(sour,sink);if(max_flow<sum)    flag=false;    ans+=micost;}if(flag)    printf("%d\n",ans);else    printf("-1\n");}return 0;
}

转载于:https://www.cnblogs.com/bitch1319453/p/4761620.html

POJ 2516 Minimum Cost 最小费用流相关推荐

  1. POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)

    题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...

  2. POJ - 2516 Minimum Cost 最小费用最大流

    题目链接 题意:给n,m,k表示商店数,储存店数,种类数 然后给n*k表示每个水果店需求每种种类的数量: 表示成 need[i][j] 再给m*k表示每个储存店每种种类数量: 表示成store[i][ ...

  3. POJ - 2516 Minimum Cost(最小费用最大流)

    题目链接:点击查看 题目大意:给出n个买家,m个货点,以及k种货物,接下来按照顺序依次给出一个n*k的矩阵,表示每个买家对于每种货物的需求,一个m*k的矩阵,表示每个货点能供给货物的数量,k个n*m的 ...

  4. poj 2516(最小费用最大流)

    其实题意很明确,最小费用最大流, 但是我这2货就建图就太二了, 我把所有的情况都弄到一个图里面. 总的点数有5000个,加上这么多的边,果断TLE... 后面知道第k个的情况是独立的,所以可以分成K次 ...

  5. [费用流专题]Going Home,Minimum Cost,工作安排

    文章目录 T1:Going Home 题目 题解 CODE T2:Minimum Cost 题目 题解 CODE T3:工作安排 题解 CODE T1:Going Home 题目 On a grid ...

  6. 【LeetCode 1000】 Minimum Cost to Merge Stones

    题目描述 There are N piles of stones arranged in a row. The i-th pile has stones[i] stones. A move consi ...

  7. [Swift]LeetCode1135. 最低成本联通所有城市 | Connecting Cities With Minimum Cost

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  8. poj 2516 最小费用最大流

    最佳匹配的题,m个仓库供应k种商品给n个商家,m*n条运输代价互异,求满足商家需求下的最小运输费用 显然,如果某种商品的供货量比需求大,肯定是无法达到要求的,所以开始要判别是否可以得到最佳匹配 这个题 ...

  9. POJ - 2914 Minimum Cut(全局最小割-Stoer_Wagner)

    题目链接:点击查看 题目大意:给出一张无向图,要求将其分为两个集合,使得最小割最小 题目分析:算法学习自:https://blog.csdn.net/dingdi3021/article/detail ...

最新文章

  1. ONNX 浅析:如何加速深度学习算法工程化?
  2. c++求矩阵的秩_一篇文章搞定矩阵相关概念及意义通俗解释汇总
  3. 常用的SSH注解标签
  4. Java synchronized 实现生产者-消费者模型
  5. NET问答: 如果动态构建 Query 查询 EntityFramework
  6. (八)nodejs循序渐进-事件驱动(进阶篇)
  7. 案例 项目经理评分 c# 1613922661
  8. 赠送300家门店260亿销售额的零售企业Power BI实战示例数据
  9. 百度android模拟器下载地址,夜神安卓模拟器官方电脑版
  10. DirectoryEntry IIS操作
  11. IDEA安装插件IDE Eval Reset
  12. Python-opencv 图片颜色域的识别选取
  13. 关于安装ANACONDA遇到的无法定位动态链接库问题
  14. win7此计算机与未识别的网络连接,win7本地连接未识别的网络怎么办_win7本地连接未识别的网络怎么解决-win7之家...
  15. 【CodingNoBorder - 04】无际软工队 - 求职岛:技术规格说明书
  16. 护眼灯显色指数多大最好?一文了解护眼灯显色指数怎么选
  17. AQS是什么?都是怎么用的?
  18. VM安装CentOS虚拟机详细教程
  19. ServiceHot ITSM助力天原集团IT运维信息化建设
  20. unity 渲染层级详解

热门文章

  1. Pure-FTPd服务器
  2. 贴别人的一个文件加密程序!
  3. 字体在ppt中可以整体替换吗_干货,做PPT时这样选择字体,瞬间提升幻灯片档次,看完你就懂了...
  4. Python入门系列之字符编码
  5. Python表白代码:“ 星光月夜烟花 皆归你,我也归你”
  6. Python字符串方法:字符串拼接、截取、转数字
  7. linux g 手动安装,linux上oracle11g 手动安装
  8. 开放平台架构_三步画出产品业务架构图
  9. 前端如何获取后台通过map封装的值_如何舒服的写api接口?
  10. 14春计算机基础作业2,北语14春《计算机基础》作业2 答案.docx