题目大意:给定一张拓扑图,每条边有边权,每次只能从第一个点出发沿着拓扑图走一条路径,求遍历所有边所需要的最小边权和

有下界有源汇的最小费用流 裸的。。。

建图如下:

对于每一条边权为z的边x->y:

从S到y连一条费用为z,流量为1的边 代表这条边至少走一次

从x到y连一条费用为z,流量为INF的边 代表这条边除了至少走的一次之外还可以随便走

对于每个点x:

从x到T连一条费用为0,流量为x的出度的边

从x到1连一条费用为0,流量为INF的边,代替原图上的源和汇

直接跑费用流就能过- - 裸EK跑了6s

看RANK1这时间MS不是费用流?

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 310
#define S 0
#define T (n+1)
#define INF 0x3f3f3f3f
using namespace std;
int n,m,ans;
namespace Min_Cost_Max_Flow{struct abcd{int to,flow,cost,next;}table[1001001];int head[M],tot=1;void Add(int x,int y,int f,int c){table[++tot].to=y;table[tot].flow=f;table[tot].cost=c;table[tot].next=head[x];head[x]=tot;}void Link(int x,int y,int f,int c){Add(x,y,f,c);Add(y,x,0,-c);}bool Edmonds_Karp(){static int q[65540],f[M],cost[M],from[M];  static unsigned short r,h;  static bool v[M];  int i;  memset(cost,0x3f,sizeof cost);  cost[S]=0;f[S]=INF;f[T]=0;q[++r]=S;  while(r!=h)  {  int x=q[++h];v[x]=0;  for(i=head[x];i;i=table[i].next)  if(table[i].flow&&cost[x]+table[i].cost<cost[table[i].to])  {  cost[table[i].to]=cost[x]+table[i].cost;  f[table[i].to]=min(f[x],table[i].flow);  from[table[i].to]=i;  if(!v[table[i].to])  v[table[i].to]=1,q[++r]=table[i].to;  }  }  if(!f[T]) return false;  ans+=f[T]*cost[T];  for(i=from[T];i;i=from[table[i^1].to])  table[i].flow-=f[T],table[i^1].flow+=f[T];  return true;}
}
int main()
{//freopen("3876.in","r",stdin);using namespace Min_Cost_Max_Flow;int i,j,y,z;cin>>n;for(i=1;i<=n;i++){scanf("%d",&m);for(j=1;j<=m;j++){scanf("%d%d",&y,&z);Link(i,y,INF,z);Link(S,y,1,z);}Link(i,T,m,0);if(i!=1)Link(i,1,INF,0);}while( Edmonds_Karp() );cout<<ans<<endl;
}

BZOJ 3876 AHOI2014 支线剧情 费用流相关推荐

  1. 有下界的最小费用可行流2.0(bzoj 3876: [Ahoi2014]支线剧情)

    什么是有下界的最小费用可行流? 平时来讲都是最小费用最大流,也就是在满流的前提条件下费用尽可能的少,而最小费用可行流一般不要求满流,但是每条边都有最小流量要求(比如经过边e(u,v)的流量不能少于4等 ...

  2. 【BZOJ3876】[Ahoi2014]支线剧情 有上下界费用流

    [BZOJ3876][Ahoi2014]支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩 ...

  3. 3876: [Ahoi2014Jsoi2014]支线剧情

    Description 提交luogu bzoj [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往 ...

  4. [BZOJ3876][AHOI2014]支线剧情-有下界的最小费用流

    支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支 ...

  5. BZOJ 5326 [JSOI2017]博弈 (模拟费用流、线段树)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5326 题解 终于成为第8个A掉这题的人--orz tzw神仙早我6小时 本以为这东西常数 ...

  6. BZOJ 4946: [Noi2017]蔬菜 模拟费用流

    title BZOJ 4946 LUOGU 3826 简化题意: 定义了一种蔬菜为:\(ai,si,ci,xi\),意思是蔬菜的价格为 \(a_i\),第一份卖出时价格为 \(a_i+s_i\),一共 ...

  7. [BZOJ 2424][HAOI2010]订货(费用流)

    Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...

  8. BZOJ.3265.志愿者招募加强版(费用流SPFA)

    题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...

  9. bzoj 2424: [HAOI2010]订货(费用流)

    2424: [HAOI2010]订货 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 784  Solved: 541 [Submit][Status ...

最新文章

  1. Java知多少(43)异常处理基础
  2. php ci框架 模板输出,CI框架中使用通用模板引擎smarty
  3. To Java程序员:切勿用普通for循环遍历LinkedList
  4. [摘录]优势谈判目录
  5. 颈部有细纹怎么缓解?
  6. Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?
  7. 项目积压需求项目计划_需求变更频繁,项目经理如何做好需求管理?
  8. 我的代码第一次运行时的样子
  9. mysql安装数据自定义_mysql数据库自定义怎么安装
  10. 窥探Swift之需要注意的基本运算符和高级运算符
  11. php 检查路劲是否存在,php 检查文件或目录是否存在代码总结
  12. 人工智能AI常见的经典K-means聚类算法原理和工作过程
  13. SAP License:定义某一模块的后台配置权限
  14. Flash Video带宽估测
  15. Quartus中Tools->Netlist Viewers->RTL Viewer
  16. java中class文件反编译_java中的.class文件反编译
  17. 17个值得收藏的国内外短信接码平台合集
  18. python如何解压zip文件_Python压缩解压zip文件
  19. 对_stdcall 的理解 (转)
  20. 常用的音频处理库介绍

热门文章

  1. 微信添加表情提示过大怎么解决?GIF太大怎么变小?
  2. 单向一对多和双向一对多
  3. 本周AI热点回顾:机器狗要去福特当工程师;人脸黑产攻击一秒被擒;德扑AI大比分击败顶尖人类选手
  4. iOS设备管理器有人推荐iTunes,有人推荐iMazing,到底如何选择
  5. 深入了解浏览器的垃圾回收
  6. Android通讯录管理遇到的权限问题
  7. LINK 2001 找不到__iob_func, 找不到__fprintf
  8. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
  9. navicat for mysql 12 破解工具 亲测可用
  10. Unity的一些特效和粒子特效插件