其实本来打算做最小费用最大流的题目前先来点模板题的,,,结果看到这道题二话不说(之前打太多了)敲了一个dinic,快写完了发现不对

我当时就这表情→   =_=你TM逗我

刚要删突然感觉dinic的模板中的bfs就相当于找每天边的权都为1的图上的最短路,稍稍改一下就能变成spfa,于是重新写了一下,但是函数名还是bfs。。。

然后又发现不对,最后要返回路径的,dfs也要改= =结果变成了非递归,但是函数名还是dfs。。。

于是一个看似是dinic,实则垃圾得不行的最小费用最大流就敲完了

然后调了一小会儿,最后发现我把入点和入点连了起来。。。难怪每次算出来都是直接飞

 1 #include <cstdio>
 2 #include <iostream>
 3 #define INF 2147483647
 4 using namespace std;
 5 int n,m,N=1,ans=0,x,y,z,h,t,i,minflow,now;
 6 int fir[3000],nex[50000],to[50000],flo[50000],cost[50000],d[3000],l[30000],father[3000];
 7 bool que[3000];
 8 inline void add(int a,int b,int c,int d){    nex[++N]=fir[a];fir[a]=N;to[N]=b;flo[N]=c;cost[N]=d;
 9                                             nex[++N]=fir[b];fir[b]=N;to[N]=a;flo[N]=0;cost[N]=-d;}
10 bool bfs()//其实是spfa
11 {
12     for(int i=1;i<=n*2+2;i++) d[i]=INF;
13     for(h=1,t=1,l[1]=n*2+1,d[n*2+1]=0;h<=t;h++)
14         for (que[l[h]]=0,i=fir[l[h]];i;i=nex[i])
15         if(flo[i] && d[to[i]]>d[l[h]]+cost[i])
16         {
17             father[to[i]]=i;//注意father存的是边
18             d[to[i]]=d[l[h]]+cost[i];
19             if (!que[to[i]])
20                 l[++t]=to[i],que[to[i]]=1;
21         }
22     return d[n*2+2]!=INF;
23 }
24
25 void dfs()//其实写成了非递归
26 {
27     for(minflow=INF,now=n*2+2;now!=n*2+1;now=to[father[now]^1])
28         minflow=min(minflow,flo[father[now]]);
29     for(now=n*2+2;now!=n*2+1;now=to[father[now]^1])
30         ans+=cost[father[now]],flo[father[now]]-=minflow,flo[father[now]^1]+=minflow;
31 }
32
33 int main()
34 {
35     scanf("%d%d",&n,&m);
36     for (int i=1;i<=n;i++)
37         scanf("%d",&x),add(n*2+1,i+n,1,x);
38     for (int i=1;i<=n;i++)
39         add(n*2+1,i,1,0);
40     for (int i=1;i<=m;i++)
41         scanf("%d%d%d",&x,&y,&z),add(min(x,y),max(x,y)+n,1,z);
42     for (int i=1;i<=n;i++)
43         add(i+n,n*2+2,1,0);
44     while (bfs()) dfs();
45     printf("%d\n",ans);
46     return 0;
47 }

转载于:https://www.cnblogs.com/wanglichao/p/5822160.html

bzoj1927最小费用最大流相关推荐

  1. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

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

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

  3. pku The Windy's KM最小权匹配 or 最小费用最大流

    http://poj.org/problem?id=3686 题意: 给定n个玩具,有m个车间,给出每个玩具在每个车间的加工所需的时间mat[i][j]表示第i个玩具在第j个车间加工所需的时间,规顶只 ...

  4. c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

    目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...

  5. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)

    题目链接 题目大意: 解题思路: 又是一道裸题 . 首先它要求第iii个点只经过ViViVi那么我们就拆点ai,ai+na_i,a_{i+n}ai​,ai+n​一个点为入点,一个为出点这条边的流量范围 ...

  6. 有源汇上下界最小费用可行流 ---- P4043 [AHOI2014/JSOI2014]支线剧情(模板)

    题目链接 题目大意: 解题思路: 有源汇上下界最小费用可行流模板题目来着 先建出一个有源汇上下界可行流的图,然后注意建图的时候要把每条边的下界的费用提前加到ans里面 然后再对图跑费用流,就是补齐费用 ...

  7. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=693 题意:有一个 k 核的处理器和 n 个工作,全部的工作都须要在一个核上处理一个单位的 ...

  8. 【最小费用最大流】Going Home

    概念: 在同一个网络中,可能存在多个总流量相同的最大流,我们可以在计算流量的基础之上,给网络中的弧增加一个单位流量的费用(简称费用),在确保流量最大的前提下总费用最小--最小费用最大流. C - Go ...

  9. 最大流最小费用java_最小费用最大流及算法

    最大流的网络,可看作为辅送一般货物的运输网络,此时,最大流问题仅表明运输网络运输货物的能力,但没有考虑运送货物的费用.在实际问题中,运送同样数量货物的运输方案可能有多个,因此从中找一个输出费用最小的的 ...

  10. POJ-2195(最小费用最大流)

    题意:二分图最小权匹配. 构图:S向左边的点连容量1,费用0的边,右边的点向T连容量1,费用0的边,点之间连容量1,费用为边权的边.最小费用最大流. 注意: 1.100*100的方格中有10000个点 ...

最新文章

  1. NVIDIA数据中心深度学习产品性能
  2. java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理(good)
  3. android动态视力测试,Chop It-看起来有点无聊却可训练动态视力的 3D 立体小游戏(iPhone, Android)...
  4. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
  5. MatConvnet工具箱文档翻译理解(2)
  6. RealFormer:把残差转移到Attention矩阵上面去
  7. gpu处理信号_GPU中的并行运算,加速你的Matlab程序
  8. 树莓派 Learning 002 装机后的必要操作 --- 03 替换软件源
  9. 《springcloud 二》微服务动态网关,网关集群
  10. [CareerCup] 3.5 Implement Queue using Two Stacks 使用两个栈来实现队列
  11. CentOS 7系统升级备份恢复实验记录
  12. 修改服务器的AJP监听地址,实习记录(五) - AJP协议文件读取漏洞
  13. Linux之LIBRARY_PATH与LD_LIBRARY_PATH配置多个目录用法
  14. 如何正确获取安卓内置SD卡的路径
  15. 福利工具,如何利用小程序免费下载积分文件呢?【第02期】
  16. gmoj 6841. 【2020.11.5提高组模拟】淘淘蓝蓝之树林
  17. mysql基础命令集合
  18. 【MATLAB】MATLAB 仿真 — 模拟调制系统 之 AM 调制过程
  19. 网络略谈(一).局域网游戏谈起红警尤里的复仇
  20. 用antd实现番茄钟

热门文章

  1. 让AI捕捉“七情”,多模态情感分析的应用和挑战
  2. 分类问题的评估指标一览
  3. “不可不学是编程,不可不用是git” | github篇
  4. 191106_爬数据绘图
  5. 搞懂Vision Transformer 原理和代码,看这篇技术综述就够了(三)
  6. 【每日算法Day 66】经典面试题:不用四则运算如何做加法?
  7. pycharm中的常用快捷键与常用设置
  8. iphone软件创富密码之 启动Xcode创建工程
  9. 亚嵌协办 博文视点Open Party第5期 参会感言
  10. 数据结构与算法(二):线性表、栈、树(二叉树,AVL树)、图