1 条题解
-
0
GTA 6 联机网络重组
算法思路
一次操作只能增加或删除一条边,代价都是 。题目要求的不是让 与 的边集相同,而是让两者的连通块划分相同,因此只看哪些边破坏了目标划分。
在 中跨越两个不同连通块的 边,在最终图里不可能存在,必须全部删除。
删掉这些边以后, 的每个连通块都整体落在某个 连通块内部。若某个 连通块内还有 个互不相连的 碎片,补 条边就能把它们接成一个整体。
于是先对 建并查集,得到每个顶点在 中的连通块,记块数为 ;再扫 的每条边,两端在 中不同块就计入答案并跳过,否则并入第二个并查集;最后统计第二个并查集的根节点个数 (孤立点各算一块),输出跨块边数加上 。
这里的 ,其中 是 的连通块 内 的碎片个数。
正确性证明
最终图中任意两点连通当且仅当它们在 中连通。若 中存在边 而 在 中不连通,这条边在最终图中必须不存在,只能删除;不同的跨块边互不相同,所以删除次数不少于跨块边数 。
删掉跨块边后,设第 个 连通块内 的碎片数为 ,有 。最终第 个 连通块必须连通,而一次加边最多把两个碎片合并,所以至少要 次加边,合计不少于 。
这样的下界可以取到:先删除全部 条跨块边,此时同一 连通块内的两个不同碎片之间没有 的边,任取两个碎片中的顶点 与 ,它们不相邻,添加 合法;每加一次碎片数减一,加 次后该块内所有 顶点连通。对所有 连通块重复该过程,总操作数恰为 。
因此最少操作次数就是 。
复杂度分析
两次并查集,时间复杂度 ,统计 与 各需 。空间复杂度 。答案在 量级,使用 64 位整数更稳妥。
- 1
信息
- ID
- 730
- 时间
- 1000ms
- 内存
- 256MiB
- 题目 Rating
- 标签
- 递交数
- 19
- 已通过
- 11
- 上传者