hdu4258 Computer Assembling
2015-06-26 08:20
204 查看
先建图,对于每个物品的A价格,连一条A到该物品的容量为价格的边,对于B价格,则连一条该物品到B的容量为价格的边,这时就可以看出该图的任何一个割都是一个合理的决策,接着对于每个适配器的价格,在a物品和b物品间连两条反平行的容量为适配器价格的边,这时该图的割仍然是一个合理的决策(当同时在不同公司购买a和b时,必然会将边ab或ba算入割中),所以直接求最大流即可。
#include #include #include #include #include #include using namespace std; #define _clr(a) memset(a,0,sizeof(a)) #define _source 0 #define _sink (n+1) int gpi[510][510],n,m; vectorgp[510]; bool input(){ for(int i=0;i<510;++i) gp[i].clear(); _clr(gpi); if(scanf("%d %d",&n,&m)==-1) return 0; int u,v,l; for(int i=1;i<=n;++i){ scanf("%d",&u); gp[_source].push_back(i),gpi[_source][i]=u; gp[i].push_back(_source); } for(int i=1;i<=n;++i){ scanf("%d",&u); gp[i].push_back(_sink),gpi[i][_sink]=u; gp[_sink].push_back(i); } for(int i=0;i
相关文章推荐
- LeetCode:Minimum Depth of Binary Tree
- mac 下有些工具 app 推荐
- c# label的内容显示不全
- Linux-中断和中断处理
- 连接Oracle的几种方式
- Android布局中的位置控制属性
- [C++ primer]第五章笔记-语句
- 《重构--改善既有代码的设计》--在对象之间搬移特性(7)
- g++编C++11/C++0x遇到的问题
- 解决 debian8 中 /etc/default/docker 无效问题
- 在电脑上装ubuntu12.04系统,内核文件是那个?
- 赫夫曼树和最小生成树的区别是什么???它们一样吗??
- CInstantCameraParams_Params
- linux c 利用指针将函数传出参数的值
- SQL Server 备份简述
- SQL Server 备份简述
- Java设置环境变量
- UVa 10188 - Automated Judge Script
- [nio]dawn的基本概念
- vs2013 Matlab引擎 丢失libeng.dll