CF1494F

题外话

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

题意

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

简要阐述

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

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

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

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

做法

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

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

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

posted @ 2021-03-03 08:50  Grice  阅读(141)  评论(1编辑  收藏  举报