#HK4229. 「ROI 2021 Day2」树上配对

「ROI 2021 Day2」树上配对

题目描述

译自 ROI 2021 Day2 T2. Гаджеты на дереве

瓦西娅最近想出了一个新游戏。给定一个连通的有向图,包含 nn 个顶点和 2(n1)2 \cdot (n - 1) 条边,并且对于每条边 (u,v)(u, v),存在一条边 (v,u)(v, u)。换句话说,这个图是从一棵树中得到的,其中每条边被分解成两个方向相反的边。

我们称一对边 (e1,e2)(e_1, e_2) 为一个配对,如果 e1e_1 的终点与 e2e_2 的起点相同,反之亦然(特别地,两条相反的边是一个配对)。瓦西娅的游戏是将图中的边分成不相交的配对。当然,他很容易就能做到这一点。

瓦西娅的朋友彼得从树中删除了 2k2 \cdot k 条有向边。因此,图中剩下 m=2(n1)2km = 2 \cdot (n - 1) - 2 \cdot k 条有向边。

现在瓦西娅想知道,是否可以将剩下的边分成不相交的配对,如果可以,请找到这种分法。请帮助他!

gadgets.png

输入格式

第一行包含两个整数 $n, m\ (2 \le n \le 1.5\cdot 10^5, 2 \le m \le 2n-2)$,表示顶点数和剩余边数。保证 mm 是偶数。

接下来的 mm 行,每行包含两个整数 ui,viu_i, v_i (1ui,vin1 \le u_i, v_i \le n),表示剩余边的起点和终点。

输出格式

如果不能将边分成配对,输出 No

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

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

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 nn 的限制 mm 的限制 子任务依赖
11 77 n20n \le 20 m20m \le 20 00
22 1010 n200n \le 200 0,10, 1
33 1111 n3000n \le 3000 m=2n4m = 2n - 4
44 2929 0,130, 1\sim 3
55 1111 n1.5105n \le 1.5\cdot 10^5 m=2n4m = 2n - 4 33
66 3232 0,150, 1\sim 5