問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
グラフ上の任意の頂点から出発し、すべての辺を通るような一筆書きをして最初の頂点に戻ることができるようなグラフをオイラーグラフと呼びます。また、そのような一筆書きの順番で頂点を並べたパスをオイラー閉路と呼びます。
以下の条件を満たす無向グラフの組 (G_1, G_2) が存在するかどうか判定し、存在する場合はそれぞれのグラフを出力してください。
条件
・ G_1 と G_2 はいずれも n 頂点の連結なオイラーグラフであり、自己ループや多重辺は存在しない。
・ それぞれ頂点番号は 1 から n までの整数である。
・ G_1 と G_2 は共通の辺を持たない。
・ G_1 と G_2 を合わせてできるグラフは頂点数 n の完全グラフである。(より厳密には G_1 ⊕ G_2 = K_n である。)
ただし、完全グラフとは、任意の 2 頂点間に辺が存在するグラフのことを指します。
n
1 行目に、G_1 と G_2 が存在する場合は 'Yes'、存在しない場合は 'No' を出力してください。
また、G_1 と G_2 が存在する場合は、続けてそれぞれのグラフを以下の形式で出力してください。
m_1
a_1 b_1
a_2 b_2
...
a_{m_1} b_{m_1}
m_2
c_1 d_1
c_2 d_2
...
c_{m_2} d_{m_2}
すべてのテストケースにおいて、以下の条件をみたします。
・ 入力はすべて整数
・ 2 ≦ n ≦ 1,000
5
Yes
5
1 2
2 3
3 4
4 5
5 1
5
1 3
3 5
5 2
2 4
4 1