2021 ICPC沈阳 H.Line Graph Matching(并查集+贪心)
Posted lwz_159
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 ICPC沈阳 H.Line Graph Matching(并查集+贪心)相关的知识,希望对你有一定的参考价值。
题目描述
题目大意
懒得写翻译了。
题目分析
首 先 , 本 题 要 求 的 是 图 L ( G ) 的 最 大 独 立 边 集 。 我 们 要 再 给 它 翻 译 回 图 G , L ( G ) 的 最 大 独 立 边 集 回 到 图 G 上 , 首先,本题要求的是图L(G)的最大独立边集。我们要再给它翻译回图G,L(G)的最大独立边集回到图G上, 首先,本题要求的是图L(G)的最大独立边集。我们要再给它翻译回图G,L(G)的最大独立边集回到图G上, 即 为 : 求 G 上 相 连 的 边 对 的 集 合 的 最 大 值 。 ( 相 连 的 边 对 意 为 两 条 边 之 间 至 少 存 在 一 个 公 共 点 的 边 对 , 例 即为:求G上相连的边对的集合的最大值。(相连的边对意为两条边之间至少存在一个公共点的边对,例 即为:求G上相连的边对的集合的最大值。(相连的边对意为两条边之间至少存在一个公共点的边对,例 如 : a − b , b − c ) 。 如:a-b,b-c)。 如:a−b,b−c)。
对 于 这 种 比 较 绕 的 题 目 , 我 们 可 以 先 看 看 它 有 什 么 性 质 。 对于这种比较绕的题目,我们可以先看看它有什么性质。 对于这种比较绕的题目,我们可以先看看它有什么性质。
回 到 图 G 之 后 我 们 可 以 发 现 : 对 于 图 上 的 一 个 连 通 块 来 说 , 如 果 该 连 通 块 上 存 在 偶 数 条 边 , 那 么 我 们 可 以 选 择 回到图G之后我们可以发现:对于图上的一个连通块来说,如果该连通块上存在偶数条边,那么我们可以选择 回到图G之后我们可以发现:对于图上的一个连通块来说,如果该连通块上存在偶数条边,那么我们可以选择 该 连 通 块 上 的 所 有 边 放 入 答 案 集 中 ; 如 果 连 通 块 上 存 在 奇 数 条 边 , 那 么 我 们 只 需 要 删 除 块 上 的 某 一 条 边 , 然 后 该连通块上的所有边放入答案集中;如果连通块上存在奇数条边,那么我们只需要删除块上的某一条边,然后 该连通块上的所有边放入答案集中;如果连通块上存在奇数条边,那么我们只需要删除块上的某一条边,然后 将 剩 下 的 边 加 入 答 案 集 中 即 可 。 将剩下的边加入答案集中即可。 将剩下的边加入答案集中即可。
然 后 考 虑 对 于 奇 数 连 通 块 , 那 些 边 不 能 删 : 对 于 一 个 两 边 都 是 只 有 奇 数 边 连 通 块 的 桥 , 我 们 是 不 能 删 除 它 的 , 然后考虑对于奇数连通块,那些边不能删:对于一个两边都是只有奇数边连通块的桥,我们是不能删除它的, 然后考虑对于奇数连通块,那些边不能删:对于一个两边都是只有奇数边连通块的桥,我们是不能删除它的, 因 为 删 除 该 边 意 味 着 会 再 多 出 两 条 无 法 进 行 匹 配 的 边 。 因为删除该边意味着会再多出两条无法进行匹配的边。 因为删除该边意味着会再多出两条无法进行匹配的边。
有 了 这 两 条 性 质 之 后 , 我 们 可 以 考 虑 用 并 查 集 来 维 护 每 个 连 通 块 的 联 通 性 。 有了这两条性质之后,我们可以考虑用并查集来维护每个连通块的联通性。 有了这两条性质之后,我们可以考虑用并查集来维护每个连通块的联通性。
下 一 个 问 题 是 如 何 进 行 边 匹 配 才 能 得 到 最 大 的 收 益 。 这 里 我 们 可 以 直 接 采 用 贪 心 策 略 , 对 边 按 权 值 从 大 到 小 进 下一个问题是如何进行边匹配才能得到最大的收益。这里我们可以直接采用贪心策略,对边按权值从大到小进 下一个问题是如何进行边匹配才能得到最大的收益。这里我们可以直接采用贪心策略,对边按权值从大到小进 行 排 序 , 每 次 将 权 值 最 大 的 边 加 入 并 查 集 中 。 行排序,每次将权值最大的边加入并查集中。 行排序,每次将权值最大的边加入并查集中。
然 后 用 f [ ] 数 组 来 维 护 当 前 的 连 通 块 中 是 否 存 在 还 没 有 匹 配 的 单 边 ( 当 连 通 块 中 边 数 为 奇 数 时 , 会 出 现 一 条 无 法 然后用f[]数组来维护当前的连通块中是否存在还没有匹配的单边(当连通块中边数为奇数时,会出现一条无法 然后用f[]数组来维护当前的连通块中是否存在还没有匹配的单边(当连通块中边数为奇数时,会出现一条无法 与 其 他 边 匹 配 的 单 边 ) 与其他边匹配的单边) 与其他边匹配的单边)
一 、 每 次 将 边 加 入 到 并 查 集 中 时 , 如 果 该 边 的 两 点 u , v 都 在 同 一 块 并 查 集 中 , 则 说 明 该 边 在 这 个 连 通 块 中 。 一、每次将边加入到并查集中时,如果该边的两点u,v都在同一块并查集中,则说明该边在这个连通块中。 一、每次将边加入到并查集中时,如果该边的两点u,v都在同一块并查集中,则说明该边在这个连通块中。 如 果 f [ r o o t ] 存 在 , 那 么 该 边 就 与 f [ r o o t ] 进 行 匹 配 , 匹 配 完 成 后 清 空 f [ r o o t ] 。 如果f[root]存在,那么该边就与f[root]进行匹配,匹配完成后清空f[root]。 如果f[root]存在,那么该边就与f[root]进行匹配,匹配完成后清空f[root]。
二 、 如 果 该 边 的 两 点 u , v 不 在 同 一 并 查 集 中 , 则 要 对 这 两 个 并 查 集 进 行 合 并 。 这 里 有 三 种 情 况 : 二、如果该边的两点u,v不在同一并查集中,则要对这两个并查集进行合并。这里有三种情况: 二、如果该边的两点u,v不在同一并查集中,则要对这两个并查集进行合并。这里有三种情况:
1 、 f [ r o o t ( u ) ] 和 f [ r o o t ( v ) ] 都 不 存 在 , 那 么 两 树 合 并 后 , f [ r o o t ] 即 为 这 条 新 边 即 可 。 1、f[root(u)]和f[root(v)]都不存在,那么两树合并后,f[root]即为这条新边即可。 1、f[root(u)]和f[root(v)]都不存在,那么两树合并后,f[root]即为这条新边即可。
2 、 f [ r o o t ( u ) ] 和 f [ r o o t ( v ) ] 两 个 中 只 存 在 一 个 , 那 么 两 树 合 并 后 , 新 放 入 的 边 和 其 中 存 在 的 f [ r o o t ] 和 并 即 可 。 2、f[root(u)]和f[root(v)]两个中只存在一个,那么两树合并后,新放入的边和其中存在的f[root]和并即可。 2、f[root(u)]和f[root(v)]两个中只存在一个,那么两树合并后,新放入的边和其中存在的f[root]和并即可。
3
、
f
[
r
o
o
t
(
u
)
]
和
f
[
r
o
o
t
(
v
)
]
都
存
在
,
那
么
说
明
u
和
v
所
在
的
连
通
块
都
为
奇
数
边
,
u
−
v
边
即
为
两
连
通
块
的
桥
。
因
此
该
边
3、f[root(u)]和f[root(v)]都存在,那么说明u和v所在的连通块都为奇数边,u-v边即为两连通块的桥。因此该边
3、f[root(u)]和f[root(v)]都存在,那么说明u和v所在的连通块都为奇数边,u−v边即为两连通块的桥。因此该边
我
们
是
不
能
删
除
它
的
,
所
以
我
们
要
让
u
−
v
边
与
f
[
r
以上是关于2021 ICPC沈阳 H.Line Graph Matching(并查集+贪心)的主要内容,如果未能解决你的问题,请参考以下文章 2021 ICPC沈阳 H.Line Graph Matching(并查集+贪心) ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph 2018 ICPC 沈阳网络预赛 Fantastic Graph (优先队列) ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (贪心)