网络流小记
最大权闭合子图#
给出一张有向图,每个点有点权,要求若选出一个点,则必须选择其能到达的点,求权值和最大的子图。
解法#
将点划分为两个点集, 表示正权点, 表示负权点,设起点为 ,终点为 。
向 内的点连流量为点权的边, 向 内的点连流量为点权的相反数的边,原图中的边保留,流量为 。
答案即为正点权总和减新图的最小割。
证明#
考虑最小割的意义, 连向的边断掉,表示不选某个正权的点,连向 的边断掉,表示选择某个负权的点。
这样的话最小割相当于是不选的正权点的权值和减选择的负权点的权值和。
正点权总和减新图的最小割自然就是答案。
求方案#
从 出发,走残余流量大于 的边,遇到的点集就是选择的正权点。
二分图最小点覆盖/最大独立集求解方案#
首先,二分图最小点覆盖等于最大匹配。
先求解出最大匹配,然后对于每个左侧的未匹配点,出发进行增广路搜索(会以匹配边结尾)。
标记经过的点,则方案为左部点中未被标记的位置和右部点中被标记的点。
证明从两个角度出发,先证点覆盖,再证大小相同。
证明 1:
考虑左侧被标记的点和右侧未被标记的点,之间的边若是匹配边,那么会推导出一个点匹配了两条边,矛盾。
若是非匹配边,那么左部点被标记后会寻找非匹配边搜索,右部点不可能未被标记,矛盾。
所以该点集为一组点覆盖。
证明 2:
最小点覆盖的必要条件是每个匹配中选出一个点,考虑这个方案如何被记入。
左部点未被标记,则记入左部点,对应的匹配点也不会被标记。
通过非匹配边到达右部点,之后沿着匹配回来,那么标记了右部点和左部点,只记入右部点。
最大独立集的方案是最小点覆盖的补集。
例题:CF1054F。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】