专栏文章
题解:qoj#1359 Setting Maps
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip58gwg
- 此快照首次捕获于
- 2025/12/03 06:22 3 个月前
- 此快照最后确认于
- 2025/12/03 06:22 3 个月前
题意简述
给定 个点, 条边的简单有向图,每个点有点权 ,并给出上面的两个点 和一个正整数 。
要求构造一个点集 ,满足从 到 的任意一条路径中,至少有 个点在 中,且 是所有这样的点集中 最小的。
。
解法
考虑 等于 的情况,这是一个最小割点集问题,拆点转为割边后求最小割即可。
对于 更大的情况,考虑类似建图。
现在一条路径要被“割 次”,那么将图复制 层,点 第 层入点记为 ,出点记为 。
对于每个 ,连边 。对于每条原图上的边 ,连边 。如果某个 在最小割中,则 选入点集 中。这样可以发现,对于任意一条原图上 到 的路径,如果在 中的点少于 个,必然存在一条从 到 的路径。
这个建图的问题是,一个点 如果被选入点集,理应同时割去所有 ,只需要 的代价,而不是当作 条边选入最小割,也就是需要说明在最小割中每个 只存在一个 被割去。
对于固定的点集 ,设 为 到 的所有路径上(不包括 )最少有多少个点在 中, 为 到 的所有路径上(不包括 )最少有多少个点在 中。那么对于 ,要求 。也就是说,只需要考虑 到 且上面恰有 个点在 中(不包括 )的路径(因为对于其他路径,即使当作 也满足要求),那么对应到上面的最小割中,只需要割去 这一条边即可。
使用 Dinic 算法求最大流,总复杂度 ,实际上相当快。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...