AT_abc345_f [ABC345F] Many Lamps
Description
[problemUrl]: https://atcoder.jp/contests/abc345/tasks/abc345_f
頂点に $ 1 $ から $ N $ の、辺に $ 1 $ から $ M $ の番号がついた $ N $ 頂点 $ M $ 辺の単純グラフがあります。辺 $ i $ は頂点 $ u_i $ と頂点 $ v_i $ を結んでいます。
各頂点にはランプが $ 1 $ 個ずつ載っています。はじめ、全てのランプは消えています。
以下の操作を $ 0 $ 回以上 $ M $ 回以下行うことで、ランプがちょうど $ K $ 個ついた状態にできるかどうかを判定してください。
- 辺を $ 1 $ 本選ぶ。辺の両端点を $ u $, $ v $ とする。$ u,\ v $ に載っているランプの状態を反転させる。つまり、ランプがついていたら消して、消えていたらつける。
また、ちょうど $ K $ 個のランプがついた状態にすることが可能な場合は、そのような操作の手順を出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ K $ $ u_1 $ $ v_1 $ $ u_2 $ $ v_2 $ $ \vdots $ $ u_M $ $ v_M $
Output Format
ちょうど $ K $ 個のランプがついた状態にすることが不可能な場合は `No` を出力せよ。
可能な場合はまず `Yes` を出力して、その後に操作の手順を以下の形式で出力せよ。
> $ X $ $ e_1 $ $ e_2 $ $ \dots $ $ e_X $
ここで、$ X $ は操作回数を、$ e_i $ は $ i $ 番目の操作で選ぶ辺の番号を意味する。これらは次を満たす必要がある。
- $ 0\ \leq\ X\ \leq\ M $
- $ 1\ \leq\ e_i\ \leq\ M $
条件を満たす操作の手順が複数ある場合は、どれを出力しても正解とみなされる。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 0\ \leq\ M\ \leq\ \min\left(\ 2\ \times\ 10^5,\ \frac{N(N-1)}{2}\ \right) $
- $ 0\ \leq\ K\ \leq\ N $
- $ 1\ \leq\ u_i\ \lt\ v_i\ \leq\ N $
- 入力で与えられるグラフは単純
- 入力される値は全て整数
### Sample Explanation 1
出力例に従って操作を行うと次のようになります。 - 辺 $ 3 $ を選ぶ。頂点 $ 2 $ と頂点 $ 4 $ に載っているランプをつける。 - 辺 $ 4 $ を選ぶ。頂点 $ 3 $ と頂点 $ 5 $ に載っているランプをつける。 - 辺 $ 5 $ を選ぶ。頂点 $ 1 $ に載っているランプをつけて、頂点 $ 5 $ に載っているランプを消す。 操作を全て終了した時点で頂点 $ 1,2,3,4 $ に載っているランプがついています。よってこの操作の手順は条件を満たしています。 条件を満たす操作の手順としては他に $ X\ =\ 4,\ (e_1,e_2,e_3,e_4)\ =\ (3,4,3,1) $ などが挙げられます。(同じ辺を $ 2 $ 回以上選んでもよいです。)