网络流相关
怎么初三了才发现网络流屁也不会,赶紧来加训。
最大权闭合子图#
定义一张有向图上的闭合子图为不存在从子图内向子图外的连边的子图。
若图中点存在点权,则定义一个闭合子图的权值为其中的点权之和。
而最大权闭合子图就是要求出图中权值最大的闭合子图。
建模方式:新建一个源点 S 和一个汇点 T,令 S 向原图中的正权点连边,最大流量为该点的权值,令负权点向 T 连边,最大流量为该点点权的相反数,原图中的边仍然连接,最大流量设为 inf。
考虑新图的一个割,其等价于一个集合划分模型,即选取一些正权点不选入闭合子图,选取一些负权点进入闭合子图。
则该割的大小为不选入闭合子图的正权点点权之和-选入闭合子图的负权点点权之和。
考虑一个闭合子图的权值是选入闭合子图的正权点点权之和+选入闭合子图的负权点点权之和。
而两者的和即为正权点点权和。
不难发现最大权闭合子图=正权点点权和-新图最小割。
退流#
这是一种技巧,用于处理一些多次对图进行细微变化后求最大流的问题。
若给图加一条边求网络流则直接加即可,若删边,则需要先去处原流量网络上该边的贡献,设删去的边为 (u,v),则令源点为 u,汇点为 S 跑一遍最大流,再令源点为 T,汇点为 v 跑一遍最大流,而后将 (u,v) 及其反向边流量改为 0,再次令源点为 S,汇点为 T 跑最大流即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步