luogu#P8119. 「Wdoi-1.5」幻想乡游览计划
「Wdoi-1.5」幻想乡游览计划
题目背景
(此为背景,可以跳过)
自从姬虫百百世开挖了妖怪之山山顶的虹龙洞后,一成不变的幻想乡又多了可以探索的地方。充满心机的、监视着幻想乡一切动静的八云紫自然需要对其内部了如指掌,以此来掌握对幻想乡的绝对控制权。作为八云紫的式神的八云蓝,则奉命探索这块区域。随行的还有八云蓝的式神,橙。
虹龙洞开采的目的是为了获取其中的龙珠,而龙珠分布在虹龙洞内的各个角落。为了能够滴水不漏地得到更多的龙珠,百百世挖出了纵横交错的矿道,连接着各处的龙珠采集点。矿道之间相互交错,构成了一张层层叠叠的网。八云蓝和橙的任务则是分别到达过虹龙洞内所有的龙珠采集点,采集足够多的信息,以完成八云紫对虹龙洞彻底的监控目标。
然而,身处于黑暗的洞穴内,诺大的虹龙洞的环境十分险恶。极度缺氧的环境使得探索虹龙洞并不是一件容易的事情,因此八云蓝与橙不可能在虹龙洞内探索过长的时间。所幸的是,八云蓝可以联系到八云紫;而拥有操控境界能力的紫,则可以利用隙间交换蓝和橙的位置。
八云紫已经私通菅牧典从大天狗那里得到了虹龙洞的内部结构图。为了尽量减少在虹龙洞内滞留的时间,八云一家需要设计出一套可行的方案。
题目描述
虹龙洞内可以抽象成一张有 个点和 条的无向连通图,图可能有自环和重边。
紫会用隙间的能力,将蓝和橙传送到虹龙洞的某一结点上。此处使用隙间所花费的时间忽略不计。输出格式中的 即代表初始传送到的结点。
接下来橙和蓝将会分别进行移动。每单位时间,蓝或者橙可以移动到与她们所在结点直接相连的结点上,或者紫使用隙间能力交换蓝和橙的位置。请注意:在这一单位时间内只有一个人(蓝或者橙或者紫)可以行动,并且此处的交换操作也是花费时间的。
现在,八云蓝请你构造出一个方案,使得橙和蓝各自都能经过虹龙洞的每个结点至少 次,并且最后都回到一开始所在的结点 以结束此次游览。在「输出格式」中蓝说明了构造方案的格式,你只要按格式输出构造方案告诉蓝就行了。
输入格式
第一行两个整数 ,表示该图有 个节点, 条边。
接下来 行,每行两个整数 ,表示有一条连接 的无向边。
输出格式
第一行输出两个整数 和 。其中 的含义见题目描述, 表示你的方案的操作次数。
接下来 行,你可以输出三种操作中的一种指导八云一家行动:
- 输出
Ran u
,表示让蓝移动到结点 ; - 输出
Chen u
,表示让橙移动到结点 ; - 输出
Swap
表示让紫交换橙和蓝的位置。
你需要保证你的构造方案合法。
容易发现,你的操作次数 等于进行所有操作所花费的单位时间数。
3 3
1 2
2 3
1 3
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。
对于每组数据,若你输出的方案不合法(含不合法的移动操作,或者蓝或橙没有经过每个结点至少 次,或者最后蓝和橙没有在 点),你的分数为零分。否则你的分数将这样计算:
- 当 时,你将获得该测试点 的分数;
- 当 时,你将获得该测试点 的分数;
- 当 时,你将获得该测试点 的分数;
- 当 时,你将获得该测试点所有的分数。
数据范围
本题采用捆绑测试,且仅有一个 subtask,总成绩取各测试点最低分。
对于 的数据,。
校验器
为了方便选手测试,在附件中我们下发了 checker.cpp
文件,选手可以编译该程序,并使用它校验自己的输出文件。但请注意它与最终评测时所使用的校验器并不完全一致。你也不需要关心其代码的具体内容。
编译命令为:g++ checker.cpp −o checker -std=c++14
。
checker 的使用方式为:./checker <inputfile> <outputfile>
,参数依次表示输入文件与你的输出文件。
若你输出的数字大小范围不合法,则校验器会给出相应提示。若你的输出数字大小范围正确,但方案错误,则校验器会给出简要的错误信息:
A x
,表示进行到第 个操作时不合法。B x
,表示操作执行完毕后蓝/橙没有经过每个节点至少一次,其中 表示蓝, 表示橙。C x
,表示操作执行完毕后蓝/橙没有回到 点。其中 表示蓝, 表示橙。Illeagl Output
,表示你输出了错误的操作。
若你的方案正确,校验器会给出 OK
。
保证在输入正确、方案合法的情况下 checker 的运行时间小于 1s。