「Wdoi-1.5」幻想乡游览计划

题目背景

(此为背景,可以跳过) 自从姬虫百百世开挖了妖怪之山山顶的虹龙洞后,一成不变的幻想乡又多了可以探索的地方。充满心机的、监视着幻想乡一切动静的八云紫自然需要对其内部了如指掌,以此来掌握对幻想乡的绝对控制权。作为八云紫的式神的八云蓝,则奉命探索这块区域。随行的还有八云蓝的式神,橙。 虹龙洞开采的目的是为了获取其中的龙珠,而龙珠分布在虹龙洞内的各个角落。为了能够滴水不漏地得到更多的龙珠,百百世挖出了纵横交错的矿道,连接着各处的龙珠采集点。矿道之间相互交错,构成了一张层层叠叠的网。八云蓝和橙的任务则是分别到达过虹龙洞内所有的龙珠采集点,采集足够多的信息,以完成八云紫对虹龙洞彻底的监控目标。 然而,身处于黑暗的洞穴内,诺大的虹龙洞的环境十分险恶。极度缺氧的环境使得探索虹龙洞并不是一件容易的事情,因此八云蓝与橙不可能在虹龙洞内探索过长的时间。所幸的是,八云蓝可以联系到八云紫;而拥有操控境界能力的紫,则可以利用隙间交换蓝和橙的位置。 八云紫已经私通菅牧典从大天狗那里得到了虹龙洞的内部结构图。为了尽量减少在虹龙洞内滞留的时间,八云一家需要设计出一套可行的方案。

题目描述

虹龙洞内可以抽象成一张有 $n$ 个点和 $m$ 条的无向连通图,图可能有自环和重边。 紫会用隙间的能力,将蓝和橙传送到虹龙洞的某一结点上。此处使用隙间所花费的时间忽略不计。输出格式中的 $S$ 即代表初始传送到的结点。 接下来橙和蓝将会分别进行移动。每单位时间,蓝或者橙可以移动到与她们所在结点**直接相连**的结点上,或者紫使用隙间能力交换蓝和橙的位置。请注意:在这一单位时间内**只有一个人(蓝或者橙或者紫)可以行动**,并且此处的交换操作也是花费时间的。 现在,八云蓝请你构造出一个方案,使得橙和蓝**各自都**能经过虹龙洞的每个结点至少 $1$ 次,并且最后**都**回到一开始所在的结点 $S$ 以结束此次游览。在「输出格式」中蓝说明了构造方案的格式,你只要按格式输出构造方案告诉蓝就行了。

输入输出格式

输入格式


第一行两个整数 $n,m$,表示该图有 $n$ 个节点,$m$ 条边。 接下来 $m$ 行,每行两个整数 $u,v$,表示有一条连接 $u,v$ 的无向边。

输出格式


第一行输出两个整数 $S$ 和 $k$。其中 $S$ 的含义见题目描述,$k$ 表示你的方案的操作次数。 接下来 $k$ 行,你可以输出三种操作中的一种指导八云一家行动: - 输出 `Ran u`,表示让蓝移动到结点 $u$; - 输出 `Chen u`,表示让橙移动到结点 $u$; - 输出 `Swap` 表示让紫交换橙和蓝的位置。 你需要保证你的构造方案合法。 容易发现,你的操作次数 $k$ 等于进行所有操作所花费的单位时间数。

输入输出样例

输入样例 #1

3 3
1 2
2 3
1 3

输出样例 #1

1 5
Ran 2
Chen 3
Swap
Ran 1
Chen 1

说明

### 样例解释 $$ \def\arraystretch{1.5} \begin{array}{|c|c|c|}\hline \textbf{操作次数} & \textbf{蓝的位置} &\textbf{橙的位置} \cr\hline 0 & 1 & 1 \cr\hline 1 & 2 & 1 \cr\hline 2 & 2 & 3 \cr\hline 3 & 3 & 2 \cr\hline 4 & 1 & 2 \cr\hline 5 & 1 & 1 \cr\hline \end{array} $$ ### 判分方式 **本题使用 Special Judge。** 对于每组数据,若你输出的方案不合法(含不合法的移动操作,或者蓝或橙没有经过每个结点至少 $1$ 次,或者最后蓝和橙没有在 $S$ 点),你的分数为零分。否则你的分数将这样计算: - 当 $k \leq 4\cdot n$ 时,你将获得该测试点 $20\%$ 的分数; - 当 $k \leq 3\cdot n$ 时,你将获得该测试点 $40\%$ 的分数; - 当 $k \le \lfloor\frac{11}{4} \cdot n\rfloor$ 时,你将获得该测试点 $70\%$ 的分数; - 当 $k \le \lfloor\frac{8}{3} \cdot n\rfloor$ 时,你将获得该测试点所有的分数。 ### 数据范围 **本题采用捆绑测试,且仅有一个 subtask,总成绩取各测试点最低分。** 对于 $100\%$ 的数据,$3\leq n,m \leq 5\times 10^5$。 ### 校验器 为了方便选手测试,在附件中我们下发了 `checker.cpp` 文件,选手可以编译该程序,并使用它校验自己的输出文件。但请注意它与最终评测时所使用的校验器并不完全一致。你也不需要关心其代码的具体内容。 编译命令为:`g++ checker.cpp −o checker -std=c++14`。 checker 的使用方式为:`./checker <inputfile> <outputfile>`,参数依次表示输入文件与你的输出文件。 若你输出的数字大小范围不合法,则校验器会给出相应提示。若你的输出数字大小范围正确,但方案错误,则校验器会给出简要的错误信息: 1. `A x`,表示进行到第 $x$ 个操作时不合法。 2. `B x`,表示操作执行完毕后蓝/橙没有经过每个节点至少一次,其中 $x=0$ 表示蓝,$x=1$ 表示橙。 3. `C x`,表示操作执行完毕后蓝/橙没有回到 $S$ 点。其中 $x=0$ 表示蓝,$x=1$ 表示橙。 4. `Illeagl Output`,表示你输出了错误的操作。 若你的方案正确,校验器会给出 `OK`。 保证在输入正确、方案合法的情况下 checker 的运行时间小于 1s。