CF 786 E ALT 一个居民有两个选择:分配一只宠物,路上都有宠物 一个守卫有两种选择:分配一只宠物,不分配宠物 我们找一个原点,到每个居民都有一条边,表示是否给他宠物 从每个居民向他路上的守卫连边 守卫到汇点连边. 居民到守卫的边容量是 $ \infin $ ,所以现在达到的效果就是,要么一个居民被加边,要么一个居民连向守卫都被鸽. 一个居民连向了 $ O(n) $ 个点啊! 怎么优化?所以我们可以类似倍增 LCA 的方法,如果向一个点的第 $ j $ 个点连边,表示它向上跳 $ 2^k…