#P11093. [ROI 2021 Day 2] 树制游戏

[ROI 2021 Day 2] 树制游戏

题目背景

翻译自 ROI 2021 D2T2

Vasya 最近想到了一种新的娱乐方式。他想让一个有 nn 个顶点和 2×(n1)2\times(n−1) 条边的有向连通图成为他的玩具。这个图满足以下条件:对于图中的每条边 (u,v)(u, v),都存在一条反向的边 (v,u)(v, u)。换句话说,这个图是由一棵树转化而来的,其中每条无向边都被分成两个方向相反的边。

Vasya 将这样一对边 (e1,e2)(e_1, e_2) 称为“gadget”,其中 e1e_1 的终点与 e2e_2 的起点相同,或者 e2e_2 的终点与 e1e_1 的起点相同(特别地,两条方向相反的边也是一种“gadget”)。简单来说,“gadget”就是一条长度为 22 的路径。Vasya 的娱乐方式是将图中的边划分为互不相交的“gadget”。当然,对于原始图来说,这很容易做到。

但是,Vasya 的好朋友 Petya 从树中删除了 2k2k 条有向边,使得图中剩下 m=2×(n1)2×km = 2\times (n - 1) - 2\times k 条有向边。

题目描述

现在 Vasya 想知道是否可以将剩下的边划分为互不相交的“gadget”,如果可能的话,还要找出这种划分的方法。

输入格式

第一行包含两个整数 nnmm,分别表示顶点数和剩余边数。保证 mm 是偶数。

接下来的 mm 行,每行包含两个整数 uiu_iviv_i,表示剩余边的起点和终点。

输出格式

如果无法将边分成“gadget”,则输出 No

否则,输出 Yes,然后输出 m2\frac{m}{2} 行,每行包含 44 个数字,表示每个“gadget”中的两对边。每条边由起点和终点两个数字表示。

5 6
1 2
2 1
1 5
2 3
2 4
4 2
Yes
1 2 2 3
2 1 1 5
2 4 4 2
4 4
2 1
2 3
2 4
4 2
No
4 4
1 2
2 1
3 4
4 3
Yes
1 2 2 1
3 4 4 3

提示

第一个示例中的“gadget”划分如下图所示,同一个类型的两条线组成了一个“gadget”。

对于 100%100\% 的数据,$2 \le n \le 150000,2 \le m \le 2\times n - 2,1 \le u_i, v_i \le n$。

子任务 分值 nn\le mm 的特殊性质
11 77 1010 m20m\le20
22 1010 200200
33 1111 30003000 m=2×n4m=2\times n-4
44 2929
55 1111 150000150000 m=2×n4m=2\times n-4
66 3232