CF1494F

题外话

貌似我是第二个A此题的人/se/se

题意

给定(n)个点(m)条边的连通无向图,你可以任选一点开始游戏,游戏有两个阶段,第一个阶段在经过一条边后这条边消失,第二阶段在经过的第二条边、第四条边、...消失
从第一阶段开始,可以任意时刻开启第二阶段,注意:第二阶段无法返回第一阶段
要求使得所有边均消失,输出方案
(n,mle 3000)

简要阐述

由于我还不会证明此做法的正确性,暂且说一说简略步骤,等官方题解出了再补个证明

单独考虑第一阶段,显然是走了个欧拉路径(回路)
单独考虑第二阶段,是走了一个菊花图,除菊花图外无法使任意图的边全部消失

考虑不经历第二阶段,那么对全图求个欧拉路径(回路)
考虑经过第二阶段,枚举一个点(t),作为欧拉路径(回路)的终点,判断除其邻点外是否有点度数为奇数

  • 若仅有一个,令其为(s),将(t)的邻点度数为奇数的提出来构成菊花图,然后对((s,t))为起点与终点跑欧拉路径
  • 若没有,枚举(t)的一个度数为奇数的邻点(s)作为欧拉路径的起点,其他度数为奇数的提出来构成菊花图,然后对((s,t))为起点与终点跑欧拉路径

做法

题解出了,证明其实也挺简单的

结论:第二阶段,为一个菊花图。

证明:
考虑路径的最后一条边必定删除,假设我们的方向为(v ightarrow u)
那么回溯这条边,现在处于(v)点,仅剩边((u,v)),那么再往前倒一步,必定是(u ightarrow v)
回溯后现在处于(u)点,仅剩边((u,v)),考虑上一步会是(? ightarrow u),然后删除了边((?,u))
不断回溯,复原出来的图始终为菊花图。

原文地址:https://www.cnblogs.com/Grice/p/14472484.html