Pro894 追查坏牛奶 题解COGS的这一题是超级满配版本 比洛谷的要强力的多:894. 追查坏牛奶 - COGS 额外要求是:求出最小割流量,同时求出割边最小,同时字典序最小的方案 输出割掉的边 最小割流量好求,最小割边的数量也好求,但同时确定哪条边不太好弄,因为存在方法互斥 首先:最小割流量就是跑最大流的结果 求最小割边的数量,需要在刚刚跑完最大流的网络上 把所有的满流边流量重新标记为1,不满流的重新标记为INF 在新的网络上跑一次最大流 这个时候得到的流量就是最小割边的数量 正确性: 满流边一定是某条流量通路的瓶颈路(虽然不一定是唯一瓶颈路) 把满流的边标记成1去跑增广路 得到的结果就是没有公共边的流量通路的条数(因为公共边只允许通过1点流量被计算一次) 那么就给这这些流量通路每个断开一条边即可(如果存在公共边先断开公共边) 如何求最小字典序的方案: 在最小割的情况下 首先要记住,我们一定是优先断开边权最大的必须满流边(删去这条边后,重新对整个网络跑最大流,最大流量会减小这个边的边权那么多(也就是这条边的传递作用无可替代)) 那么找最小字典序方案也出来了:在正常的图上,先跑一次最大流 然后枚举所有边(首先把边按照边权(大到小)-字典序(小到大)两个关键字排序) 先复原整个网络到未增广形态 然后尝试删去这条边,看最大流结果减少的是否是这条边流量那么多 如果是,说明这是关键边,记录这条边会被删除(贪心保证了删除的边数目最少,因为这条边满流,不删它就要删和它在同一支流的多条边) 把这条边永久性删除,并将最大流的结果减小(该边的流量)那么多 这就导致你需要先用正常的边权跑DINIC,再用1和INF的边权跑DINIC,再用正常的边权去找应当被删除的边
题目894 追查坏牛奶
AAAAAAAAAAAA
9
评论
2022-11-15 20:49:14
|