【网络流24题】分配问题 最小最大费用最大流
Description
Input
Output
Sample Input
Sample Output
5 14
题解:
(S,人,1,0) (工作,T,1,0) (人,工作,INF,map[i][j])
然后最小费用就是跑spfa增广最小cost
最大费用就是把map[i][j]设成负的,然后一样跑spfa,答案即为-ans
可笑的是傻逼的我搞了个层次网络,然后挂了.
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 const int N=505,INF=1999999999; 7 int gi(){ 8 int str=0;char ch=getchar(); 9 while(ch>'9'||ch<'0')ch=getchar(); 10 while(ch>='0' && ch<='9')str=str*10+ch-'0',ch=getchar(); 11 return str; 12 } 13 int n,S=0,T,num=1,head[N]; 14 struct Lin{ 15 int next,to,dis,cost; 16 }a[N*N]; 17 int map[101][101]; 18 void init(int x,int y,int dis,int cost){ 19 a[++num].next=head[x]; 20 a[num].to=y; 21 a[num].dis=dis; 22 a[num].cost=cost; 23 head[x]=num; 24 a[++num].next=head[y]; 25 a[num].to=x; 26 a[num].dis=0; 27 a[num].cost=-cost; 28 head[y]=num; 29 } 30 bool vis[N];int q[N*10],pre[N],f[N],ans=0; 31 bool spfa() 32 { 33 for(int i=0;i<=T;i++)f[i]=INF,vis[i]=false; 34 q[1]=S;f[S]=0;int x,u,t=0,sum=1; 35 while(t!=sum) 36 { 37 x=q[++t]; 38 for(int i=head[x];i;i=a[i].next){ 39 u=a[i].to; 40 if(a[i].dis<=0)continue; 41 if(f[x]+a[i].cost<f[u]){ 42 f[u]=f[x]+a[i].cost; 43 pre[u]=i; 44 if(!vis[u])vis[u]=true,q[++sum]=u; 45 } 46 } 47 vis[x]=false; 48 } 49 if(f[T]!=INF) 50 ans+=f[T]; 51 return f[T]!=INF; 52 } 53 void Change() 54 { 55 int x=T; 56 while(x){ 57 a[pre[x]].dis--; 58 a[pre[x]^1].dis++; 59 x=a[pre[x]^1].to; 60 } 61 } 62 void Clear(){ 63 memset(head,0,sizeof(head)); 64 num=1;ans=0; 65 } 66 int main() 67 { 68 n=gi();T=(n<<1)+1; 69 for(int i=1;i<=n;i++)init(S,i,1,0),init(i+n,T,1,0); 70 for(int i=1;i<=n;i++){ 71 for(int j=1;j<=n;j++){ 72 map[i][j]=gi();init(i,j+n,INF,map[i][j]); 73 } 74 } 75 while(spfa()){ 76 Change(); 77 } 78 printf("%d\n",ans); 79 Clear(); 80 for(int i=1;i<=n;i++)init(S,i,1,0),init(i+n,T,1,0); 81 for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)init(i,j+n,INF,-map[i][j]); 82 while(spfa()){ 83 Change(); 84 } 85 printf("%d",-ans); 86 return 0; 87 }
转载于:https://www.cnblogs.com/Yuzao/p/6877808.html
【网络流24题】分配问题 最小最大费用最大流相关推荐
- 【网络流24题】圆桌聚餐(最大流)
[网络流24题]圆桌聚餐(最大流) 题面 Cogs 题解 这道题很简单 首先每个单位的人数限制 直接从源点向单位连边,容量为人数 同样的, 每个桌子向汇点连边,容量为可以坐的人数 因为每个桌子只能够做 ...
- [网络流24题] 负载平衡问题 (费用流)
洛谷传送门 LOJ传送门 本题解思路来自hzwer黄学长 搬运后每个位置应该有的货物数量$num=\frac{\sum a_{i}}{n}$ 那么大于$num$的位置都应该把一部分货物提供给其他位置, ...
- [网络流24题] 航空路线问题 (费用流)
洛谷传送门 LOJ传送门 这道题的图还挺好想的吧 反正都是无向边,起点走到终点再回到起点,就相当于从起点走$2$次到达终点,且这两次不经过相同的点,还要经过尽可能多的点 很经典的费用流建图 限制点通过 ...
- 【网络流24题】最小路径覆盖问题
[题目]1738: 最小路径覆盖问题 [题解]网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意. mark记录有入度的右侧点,然后从没 ...
- 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题
Description 问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任 ...
- [网络流24题][CODEVS1914]运输问题(费用流)
题目描述 传送门 题解 从源点向每一个仓库连边,费用为0,容量为仓库中货物数量: 从每一个零售店向汇点连边,费用为0,容量为零售店应得的货物数量: 从仓库向零售店连边,费用为该仓库运到零售店的费用. ...
- LibreOJ #6002. 「网络流 24 题」最小路径覆盖
内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 网络流 最大流 屠龙宝刀点击就送 #include <cs ...
- LOJ#6002. 「网络流 24 题」最小路径覆盖
模板. 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 //#include<ti ...
- 【网络流24题】搭配飞行员(最大流+二分图匹配)
传送门 搭配飞行员 题意:二分图匹配裸题,不多说 I think Dinic算法跑最大流解决||匈牙利算法 Code 代码一:Dinic #include<cstdio> #inc ...
- 【网络流24题】圆桌聚餐 (最大流)
题意 假设有来自 nn n 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 riri r_i .会议餐厅共有 mm m 张餐桌,每张餐桌可容纳 cici c_i 个代表就餐. 为了使 ...
最新文章
- How to read a book
- 嵌入式Linux综合知识
- C Primer Plus 第5章 运算符、表达式和语句 编程练习及答案
- 无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...
- nGQL知识点总结-20210719
- const对象,NULL和nullptr,C++中创建对象数组
- 1到n阶乘算法的改进
- Qt中echo服务器的简单编写
- Codeforces Round #445 div.2 D. Restoration of string 乱搞
- 【codevs1033】蚯蚓的游戏问题,费用流
- 基于用户长短期表示的新闻推荐
- Wix 3.0正式发布
- Android APK的加密
- 对称密钥和非对称密钥
- 机器人潘森护盾_新版潘森无伤抗塔 E技能护盾机制全解析
- Java 9 的 9 个特性
- 分布式散列表(DHT)及具体实现Kademlia(kad)/Chord
- 基于图像的三维重建——针孔相机模型(1)
- 用python实现12306登录、查票(小白都一看就懂的)
- python_while 循环_珠穆朗玛峰
热门文章
- mysql死锁自动处理方法_19. 死锁的产生和 MySQL 自动处理方式
- latex IEEE 模板 使用bib BibTeX
- 区块链 xuperchain io.grpc.StatusRuntimeException: UNKNOWN: error execution reverted: execution reverted
- 怎么判断噎到没噎到_怎么判定股市是在走牛市还是走熊市呢?两种最简单的判定方法...
- java 正则 非贪婪_正则表达式中贪婪模式与非贪婪模式的区别
- 数据结构和算法——八种常用的排序算法------基数排序
- 设计模式之GOF23外观模式
- linux编写设备驱动 编译成ko文件 重新编译内核,Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit...
- android状态栏虚拟按键适配,Android开发笔记——透明状态栏与透明虚拟按键
- window远程桌面连接实现连接他人电脑=》mstsc