zoukankan      html  css  js  c++  java
  • 最小割的一些小技巧(实用小干货)

    求最小边的最小割

    设总边数为$E$,跑最大流之前所有的边权都乘$E+1$然后再$+1$

    得到的结果应该是$mincut*(E+1)+$割边数量(这个比较显然吧)

    由于割边数越小,跑出来结果越小,所以就自动选了割边数量小的边(但相同不能保证字典序)

    结果$%(E+1)$就是最小边数

    $E+1$也可以替换成大于边数的数。

    输出任意一种最小割的方案

    跑过一次最大流之后,在残量网络上,s和t之间不连通了
    进行一次$dfs/bfs$,求出从$s$出发能到达的点集$S$,和不能到达的点集$T$
    所有从S跨越到T的满流边(残留网络为0)构成了一组最小割

    判断一条边是否满流

    运行一次最大流算法,得到一个残量网络
    取残量网络上的一条满流边(u, v),判断这条边是否一定满流
    对残量网络运行Tarjan算法,求出所有SCC
    当u和v不属于同一个SCC的时候,这条边一定满流
    否则,我们可以在SCC中找到一个包含这条边的反向边的环,沿着环增广一次,仍然不破坏流量平衡,但是这条边已经不满流了

    判断某一条边是否可能为最小割中的一条

    所有一定满流的边都可能为最小割

    判断某条边是否一定出现在最小割中

    首先还是对残量网络求SCC
    考虑一条满流边(u, v),判断她是否一定出现在最小割中
    当u和s属于同一个SCC,并且v和t属于同一个SCC的时候,这条边一定出现在最小割中

  • 相关阅读:
    VS停止调试,IIS Express也跟着关闭了
    会钓鱼的程序员
    彻底搞懂https原理
    Java小知识
    ORA-01000: 超出打开游标的最大数(java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误)
    虚拟机电脑重启后连接不上ORACLE
    电视直播源
    国内开源镜像站
    分享一波泰勒斯威夫特手机高清壁纸
    阿里云网盘内测申请
  • 原文地址:https://www.cnblogs.com/lyttt/p/11817977.html
Copyright © 2011-2022 走看看