luogu#B3904. [NICA #3] 图造构

[NICA #3] 图造构

题目描述

从一个 nn 个点的无向简单图 SS(无自环无重边)可以通过以下步骤构造出另一个 nn 个点的无向简单图 TT

  1. 初始 TT 中只有 nn 个点,没有任何边;
  2. 选择 SS 中两个度数相同的点 u,vu,v,然后在 TT 中连接 uuvv,同时将 SS 中的点 uu 以及 uu 连出去的边一同删去;
  3. 重复步骤 22,直到 SS 中仅剩下一个点,此时得到的图 TT 即为构造出的图。

容易发现同样的一张无向简单图 SS 可能可以构造得出不同的图 TT,并且我们还可以由构造出来的图 TT 继续构造图 TT' 等等。

现在给定两张点数相同的无向简单图 S,TS,T,请你通过至少 11 次且不超过 33 次构造从 SS 构造出 TT输入数据保证有解。如果有多种方案,输出任意一种都会被判定为正确。

或者说你要做 k(1k3)k(1\le k\le 3) 次构造 ST1T2TkS\to T_1\to T_2\to \cdots\to T_k,满足 Tk=TT_k=T

输入格式

输入第一行一个整数 nn,表示 SSTT 中点的数量。

输入第二行一个整数 mSm_S,表示 SS 中边的数量。

接下来 mSm_S 行每行两个整数 u,vu,v,表示一条 SS 中的无向边。保证不存在重边和自环。

输入第 mS+3m_S+3 行一个整数 mTm_T,表示 TT 中边的数量。

接下来 mTm_T 行每行两个整数 u,vu,v,表示一条 TT 中的无向边。同样地,保证不存在重边和自环。

输出格式

输出第一行一个整数 kk,其中 1k31\le k\le 3,表示你使用的构造次数。

接下来你需要输出 k(n1)k(n-1) 行,每行两个整数 u,vu,v,分别表示你这 kk 次构造的构造过程。

具体来说,对于某一次特定的构造过程,你需要输出 n1n-1 行,表示题意中步骤 22 中每次选择的两个点 u,vu,v

3
3
1 2
2 3
3 1
2
1 2
2 3
1
1 2
2 3

提示

样例 1 解释

初始 T1T_1nn 个点,没有边。

一开始 SS 中包含三条边 (1,2),(2,3),(3,1)(1,2),(2,3),(3,1),每个点的度数分别为 d1=d2=d3=2d_1=d_2=d_3=2

选择 1,21,2 这两个度数相同的点,然后将边 (1,2)(1,2) 加入 T1T_1,删除 SS 中的边 (1,2),(3,1)(1,2),(3,1) 和点 11

此时 SS 中包含一条边 (2,3)(2,3),每个点的度数分别为 d2=d3=1d_2=d_3=1

选择 2,32,3 这两个度数相同的点,然后将边 (2,3)(2,3) 加入 T1T_1,删除 SS 中的边 (2,3)(2,3) 和点 22,并结束此次构造。

此时得到的 T1T_1 中有两条边 (1,2),(2,3)(1,2),(2,3),有 T1=TT_1=T 满足条件。

数据范围

对于所有数据,满足 2n1052\le n\le 10^51mS,mT2×1051\le m_S,m_T\le 2\times 10^5