#P14943. [uoi2018]Octopus章鱼
[uoi2018]Octopus章鱼
题目描述
不久前,彼得里克从海边度假回到了家。彼得里克非常喜欢动物,因此这次假期中最让他难忘的是海边有许多动物,其中包括他最喜欢的章鱼。
回家后,彼得里克立刻想搭建许多章鱼。为此,他准备用自己的积木玩具。这个积木由一些柔性小棒组成,可以用来连接圆盘。共有 个圆盘,第 个圆盘有 个孔,小棒可以插入孔中。小棒不能连接一个圆盘自身,并且任意两个圆盘之间至多由一根小棒连接。
在彼得里克的想象中,章鱼具有如下结构:
- 章鱼的身体由三个或更多圆盘构成,这些圆盘用小棒连成一个环;
- 章鱼的触手由若干圆盘通过小棒连接而成;触手可以分叉,但不能重新合并;
- 每条触手通过一根小棒连接到身体中的某个圆盘。

注意,章鱼可以有多条触手,也可以没有触手。多个触手也可以连接在身体的同一个圆盘上。图中展示了一些章鱼。
任务
请帮助彼得里克搭建章鱼,使得满足以下条件:
- 所有圆盘都必须被使用;
- 每个圆盘的每一个孔都必须插入一根小棒;
- 构造出的章鱼数量尽可能多。注意,这一条只在部分子任务中是强制要求。
输入格式
第一行包含一个整数 (),表示彼得里克积木中的圆盘数量。
第二行包含 个整数 (),表示第 个圆盘的孔数。
第三行包含一个整数 。若 ,表示不需要最大化章鱼数量;若 ,表示需要最大化章鱼数量。
输出格式
第一行输出 Yes,表示可以搭建章鱼;或输出 No,表示不可能搭建。
如果第一行为 Yes,则接下来输出一个整数 ,表示章鱼的数量。然后输出 行,第 行包含两个整数 与 :
- ()表示圆盘 属于第几只章鱼;
- 表示与圆盘 相邻、且更靠近章鱼身体的圆盘编号。
如果圆盘 属于章鱼身体,则认为 。
请结合样例理解输出格式。
输入
9
2 1 2 1 1 1 4 3 3
1
输出
Yes
1
1 -1
1 7
1 -1
1 7
1 8
1 9
1 -1
1 -1
1 -1
子任务
1.(9 分)对所有 ,,且不需要最大化章鱼数量; 2.(13 分)对所有 ,,且需要最大化章鱼数量; 3.(27 分)不需要最大化章鱼数量; 4.(51 分)需要最大化章鱼数量。