739. [网络流24题] 运输问题
739. [网络流24题] 运输问题
★★ 输入文件:tran.in
输出文件:tran.out
简单对比
时间限制:1 s 内存限制:128 MB
«问题描述:
«编程任务:
对于给定的m 个仓库和n 个零售商店间运送货物的费用,计算最优运输方案和最差运
输方案。
«数据输入:
«结果输出:
程序运行结束时,将计算出的最少运输费用和最多运输费用输出到文件tran.out中。
输入文件示例 输出文件示例
tran.in
2 3
220 280
170 120 210
77 39 105
150 186 122
tran.out
69140
对于所有数据:1<=N,M<=100
题解:
比较容易想到费用流。
建图:
1>建立虚拟源S和汇T。
2>从S到m个仓库建流量为a[i],费用为0的边。
3>从n个商店向T建流量为b[i],费用为0的边。
4>从m个仓库向n个商店建流量为无穷大,费用为c[i][j]的边。
然后跑一边最小费用,再跑一边最大费用就好了。
AC代码:
#include<cstdio> #include<cstring> #include<iostream> #define m(s,t) memset(s,t,sizeof s) #define R register #define inf 2139062143 using namespace std; int read(){R int x=0;bool f=1;R char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return f?x:-x; } const int N=310; struct node{int v,next,cap,cost; }e[N*N];int tot=1; int n,m,S,T,ans,head[N],pree[N],prev[N],flow[N],dis[N],q[N*10]; int a[N],b[N],c[N][N]; bool vis[N]; void add(int x,int y,int a,int b){e[++tot].v=y;e[tot].cap=a;e[tot].cost=b;e[tot].next=head[x];head[x]=tot; } void ins(int x,int y,int a,int b){add(x,y,a,b);add(y,x,0,-b); } void build(){S=0,T=m+n+1;for(int i=1;i<=m;i++) ins(S,i,a[i],0);for(int i=1;i<=n;i++) ins(i+m,T,b[i],0);for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){ins(i,j+m,inf,c[i][j]);}} } void Cl(){tot=1;ans=0;m(head,0);m(pree,0);m(prev,0);m(flow,0); } bool spfa(int k){m(vis,0);k>0?m(dis,127):m(dis,128);int h=0,t=1;q[t]=S;dis[S]=0;vis[S]=1;flow[S]=inf;while(h!=t){int x=q[++h];vis[x]=0;for(int i=head[x];i;i=e[i].next){int v=e[i].v,cap=e[i].cap,cost=e[i].cost;if(cap>0&&((k>0&&dis[v]>dis[x]+cost)||(k<0&&dis[v]<dis[x]+cost))){dis[v]=dis[x]+cost;prev[v]=x;pree[v]=i;flow[v]=min(flow[x],cap);if(!vis[v]){vis[v]=1;q[++t]=v;}}}}if(k>0) return dis[T]<inf;else return dis[T]>0; } void work(){for(int i=T;i!=S;i=prev[i]){e[pree[i]].cap-=flow[T];e[pree[i]^1].cap+=flow[T];}ans+=flow[T]*dis[T]; } int main(){freopen("tran.in","r",stdin);freopen("tran.out","w",stdout);m=read();n=read();for(int i=1;i<=m;i++) a[i]=read();for(int i=1;i<=n;i++) b[i]=read();for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){c[i][j]=read();}}build();while(spfa(1)) work();printf("%d\n",ans);Cl();build();while(spfa(-1)) work();printf("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/shenben/p/6220688.html
739. [网络流24题] 运输问题相关推荐
- 线性规划与网络流24题 运输问题(最裸的费用流了)
存费用流模板 用sfpa算出最小费用和路径,沿这条路径增广 1 const 2 inf=maxlongint; 3 var 4 n,m:longint; 5 map,a,w:array[0..120, ...
- 解题报告:线性规划与网络流24题
目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...
- 「网络流24题」 题目列表
「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...
- 【算法】【网络流24题】巨坑待填(成功TJ,有时间再填)
------------------------------------------------------------------------------------ 17/24 --------- ...
- 【题解】网络流24题一句话题解集合
最近写了下<线性规划与网络流24题>,发下代码和题解,事实上就是将交给cycycy的题解复制一下 T1 飞行员配对方案问题 solution 裸的匈牙利 code #include< ...
- cwl的网络流24题练习
网络流24题 编号 题目 备注 1 飞行员配对方案问题 二分图最大匹配,可最大流解决 2 太空飞行计划问题 3 最小路径覆盖问题 有向图最小路径覆盖,解法都写题目上了 4 魔术球问题 有向图最 ...
- 「网络流24题」 12. 软件补丁问题
「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...
- loj #6226. 「网络流 24 题」骑士共存问题
#6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些 ...
- 【线性规划与网络流24题】孤岛营救问题 分层图
孤岛营救问题 Time Limit: 1 Sec Memory Limit: 128 MB Description 1944年,特种兵麦克接到国防部的命令.要求马上赶赴太平洋上的一个孤岛,营救被敌军 ...
最新文章
- TensorFlow 莫烦 手写识别 cross_entry (五)
- MySQL 安装包下载教程
- win10弹不出密码输入框_电脑互访提示输入网络密码,怎么办?
- 【机器学习】集成学习ensemble之随机森林
- 云网管—云上构建网络自动化体系
- 性能测试基础之JMeter聚合报告详解
- 第 20 次 CSP认证 202009-4 星际旅行
- fsLayui联动表格使用(二)
- unity3d协同不同设备的代码
- mysql中count(*)、count(1)和count(字段)的区别
- 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
- python用matplotlib或boxplot作图的时候,中文标注无法正常显示,乱码为小方框的解决办法
- 【gp数据库】你可能不知道却超级实用的函数
- cf最低要求配置2021是什么
- 【LeetCode】975. Odd Even Jump 解题报告(C++)
- [转]浅析360的危害 我为什么推荐卸载360
- C++语言涉猎笔记(二)
- 一个完整的MSI包的配置文件XML的内容形式和查看方法ORCA
- 一个程序员修炼之道《论程序员的自我修养》
- 括号画家——解题报告
热门文章
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 对象控制反转
- 简易的实现对象内存池
- Linux版本配置环境变量,如何linux环境下配置环境变量过程图解
- python 常量 模块_Python字符串模块的有用常量
- Golang——结构体创建与初始化、结构体与数组、结构体与切片、结构体与map、结构体作为函数参数、结构体方法、结构体方法继承
- 如何下载php-5.5.38.tar.gz_搭建PHP服务器php-5.3.28.tar.gz
- mysql any 效率_关于mysql的性能优化
- html页面tableview,用JS写的一个TableView控件代码
- 在python语言中不能作为变量名的是什么_4、 在 Python 中可以使用 if 作为变量名。 (1.0分)_学小易找答案...
- 计算机第二课堂教学计划,小学的第二课堂教学计划