博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs1914 运输问题
阅读量:7107 次
发布时间:2019-06-28

本文共 2122 字,大约阅读时间需要 7 分钟。

题目描述 Description

W 公司有m个仓库和n 个零售商店。第i 个仓库有ai 个单位的货物;第j 个零售商店

需要bj个单位的货物。货物供需平衡,即  sum(si)=sum(bj)
。从第i 个仓库运送每单位货物到
第j 个零售商店的费用为cij 。试设计一个将仓库中所有货物运送到零售商店的运输方案,
使总运输费用最少。
编程任务:
对于给定的m 个仓库和n 个零售商店间运送货物的费用,计算最优运输方案和最差运输方案。

输入描述 Input Description

的第1行有2 个正整数m和n,分别表示仓库数和

零售商店数。接下来的一行中有m个正整数ai ,1≤i≤m,表示第i个仓库有ai 个单位的货
物。再接下来的一行中有n个正整数bj ,1≤j≤n,表示第j个零售商店需要bj 个单位的货
物。接下来的m行,每行有n个整数,表示从第i 个仓库运送每单位货物到第j个零售商店
的费用cij 。

输出描述 Output Description

将计算出的最少运输费用和最多运输费用输出

样例输入 Sample Input

2 3

220 280
170 120 210
77 39 105
150 186 122

样例输出 Sample Output

48500

69140

啊啊啊啊啊啊啊啊
又是上次的错误
调了一个多小时
感谢某位大佬(哭唧唧。。。)
题目本身其实并不难
只是要记得跑最短路时dis数组初始化为inf
最长路
dis数组初始化为-inf!dis数组初始化为-inf!dis数组初始化为-inf!
当没有负权边时可为-1,但是因为费用流反向弧费用为原流的相反数
所以原来为正数的边权变为了负数
所以
dis数组初始化为-inf!
每次都是因为仅初始为-1而调很久
所以保险起见都初始为-inf吧
代码写得略丑
见谅见谅
#include
#include
#include
const int inf=0x3f3f3f3f,N=50000;struct node{ int to,next,v,c,from;}e[1000000],f[1000000];int first[N],dis[N],qu[N],bo[N],from[N],first2[N];int cnt=1,s,t,ans=0;void insert(int u,int v,int q,int c){ e[++cnt].to=v;e[cnt].from=u;e[cnt].next=first[u];first[u]=cnt;e[cnt].v=q;e[cnt].c=c; e[++cnt].to=u;e[cnt].from=v;e[cnt].next=first[v];first[v]=cnt;e[cnt].v=0;e[cnt].c=-c; cnt-=2; f[++cnt].to=v;f[cnt].from=u;f[cnt].next=first2[u];first2[u]=cnt;f[cnt].v=q;f[cnt].c=c; f[++cnt].to=u;f[cnt].from=v;f[cnt].next=first2[v];first2[v]=cnt;f[cnt].v=0;f[cnt].c=-c;}bool spfa(){ memset(dis,inf,4*(t+5)); int i=1,j=2; qu[1]=s;bo[s]=1;dis[s]=0; while(i!=j) { int r=qu[i++];bo[r]=0;if(i==N) i=0; for(int k=first[r];k;k=e[k].next) { if(e[k].v>0&&dis[e[k].to]>dis[r]+e[k].c) { dis[e[k].to]=dis[r]+e[k].c; from[e[k].to]=k; if(!bo[e[k].to]) { if(dis[e[k].to]
0&&dis[f[k].to]
dis[i]) { i--;if(i<0) i=N-1; qu[i]=f[k].to; } else qu[j++]=f[k].to;if(j==N)j=0; bo[f[k].to]=1; } } } } if(dis[t]==-inf) return 0; return 1;}void fa(){ int min=inf; for(int k=from[t];k;k=from[e[k].from]) min=min

转载于:https://www.cnblogs.com/Brian551/p/7353039.html

你可能感兴趣的文章
leetcode题解(数组问题)
查看>>
rand()函数埋的一个坑,大家注意了
查看>>
二、KVO实现原理
查看>>
Android 悬浮窗权限各机型各系统适配大全
查看>>
Nodejs 进阶:express+session 实现简易身份认证
查看>>
设计模式 | 策略模式及典型应用
查看>>
JVM 一套卷,助你快速掌握优化法则
查看>>
多迪技术部带你回顾2017年程序员们过得好吗?
查看>>
idea保存时自动format
查看>>
A guide to this in JavaScript
查看>>
babel插件开发心得
查看>>
简单聊聊Android组件化
查看>>
Java多线程编程笔记之多线程技能
查看>>
浅谈伪共享
查看>>
Clean Code 读书笔记
查看>>
通过 HTTP Session 单点登录解决方案
查看>>
Android热修复之 打补丁原来如此简单
查看>>
Xshell传输文件
查看>>
同城货运主导全新商流体系:智慧物流成胜负关键?
查看>>
[MetalKit]27-Using-MetalKit-part-17使用MetalKit17
查看>>