题面

先讨论没有 shift 模式的情况,显然原图是一张半欧拉图才可满足情况。

对于 mode shift 分析后,发现此模式可以完整地删完一张菊花图。

这样只要原图能分成一张半欧拉图 \(G\) 和一张菊花图 \(G'\) 就有解。

一条枚举的思路就有了。

枚举每一个节点,设其为菊花图的中心 \(p\) ,对于每一个度数为奇数且与 \(p\) 点相连的点,贪心地加入菊花图中。

但是我们还需要调整另一些边以应付不同的情况,即将一条边从 \(G\) 移到 \(G'\) 或从 \(G'\) 移到 \(G\) 中。

列出一些性质:

  1. 半欧拉图中有 0 或 2 个奇度节点。

  2. 菊花图的中心点 \(p\) 必定位于这条欧拉通路的最终节点。

  3. 若有两个奇度顶点,欧拉通路的两端点必为这两个奇度顶点。

每次调整都会将 \(G\) 中的奇度节点加一,这将成为路径的一个起点,而终点必定是 \(p\) ,所以不可能同时存在两条与 \(p\) 相连的边同时被调整。

按照上述操作直接模拟即可。

时间复杂度 \(\mathcal{O}((n+m)^2 \log n)\)

Code(C++):Link.

相关文章:

  • 2022-12-23
  • 2021-10-11
  • 2021-09-09
  • 2022-12-23
  • 2021-08-31
  • 2021-12-24
  • 2021-07-19
猜你喜欢
  • 2021-08-20
  • 2021-06-01
  • 2021-09-05
  • 2022-02-14
  • 2021-10-16
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案