zoukankan      html  css  js  c++  java
  • 网络流总结

    无向图网络流

    建图时直接把反向边的出事容量设为与正向边相同即可。

    最大权闭合子图

    选出一个点集,使得它们的后继节点都在这个点集中,使这个点集尽可能地大。

    解法:
    源点向点权>=0的点连边,容量=点权。
    源点向点权<0的点连边,容量=abs(点权)。
    点权>=0的点向点权<=0的点连边,容量=inf。
    ans=正点权之和-最小割。

    思维过程:
    先把所有点权>=0的点取上,去从中删除一些不优的。
    一个点权>=0的点如果要取,那么必然所有和他相连的点权<=0的点都必须取。
    把这个强制要取的过程转化成在网络图上强制他们不连通,必须要把<=0的点给割掉,割掉的代价就是这个负点权。
    如果这个点权>=0的点不取,那么就在网络图上体现为把它割掉,不去影响与它相连的负点权的取舍,割掉后总收益减少量就是它的点权。
    综上,由于我们显然要最小化这个减去的代价,所以可以用最小割来求解。

    https://blog.csdn.net/qq_43202683/article/details/90049597

    最小路径覆盖

    做法:
    首先将每个节点拆成(Xi,Yi)两个节点,建立源点和汇点,分别连接(S,Xi)和(Yi,T)。
    然后对于每一条原图中的边,建立边(Xi,Yi)即可。
    ans=总点数-最大流

    思维过程:
    我们首先将原图用n条路径覆盖,每条边只经过每个节点。
    现在尽量合并更多的路径(即将两个路径通过一条边首尾相连)。
    可以知道,每合并两条路径,图中的路径覆盖数就会减少1。
    所以我们只需要利用网络流合并相关的路径即可。

  • 相关阅读:
    The Django Book学习笔记 04 模板
    The Django Book学习笔记
    Python标准库 datetime
    Python %s和%r的区别
    Python转载
    Python while 1 和 while True 速度比较
    Git 时光穿梭鸡 删除文件 以及批量删除文件
    git reset soft,hard,mixed之区别深解
    Git 时光穿梭鸡 撤销修改
    Git 时光穿梭鸡 管理修改
  • 原文地址:https://www.cnblogs.com/Creed-qwq/p/10085371.html
Copyright © 2011-2022 走看看