AT_abc366_g [ABC366G] XOR Neighbors
Description
[problemUrl]: https://atcoder.jp/contests/abc366/tasks/abc366_g
$ N $ 頂点 $ M $ 辺の単純無向グラフが与えられます。$ i $ 番目の辺は頂点 $ u_i $ と $ v_i $ を双方向に結びます。
このグラフの各頂点に $ 1 $ 以上 $ 2^{60} $ 未満の整数を書き込む方法であって、次の条件を満たすものが存在するか判定し、存在するならば一つ構築してください。
- 次数が $ 1 $ 以上のすべての頂点 $ v $ について、隣接する頂点 ($ v $ 自身は含まない) に書き込まれている数の総 XOR が $ 0 $ となる
XOR とは非負整数 $ A,B $ の XOR $ A\ \oplus\ B $ は、以下のように定義されます。 - $ A\ \oplus\ B $ を二進表記した際の $ 2^k\ \,\ (k\ \geq\ 0) $ の位の数は、$ A,B $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
例えば、 $ 3\ \oplus\ 5\ =\ 6 $ となります (二進表記すると: $ 011\ \oplus\ 101=110 $)。
一般に $ k $ 個の整数 $ p_1,\ \dots,\ p_k $ の XOR は $ (\cdots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \cdots\ \oplus\ p_k) $ と定義され、これは $ p_1,\ \dots,\ p_k $ の順番によらないことが証明できます。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ u_1 $ $ v_1 $ $ u_2 $ $ v_2 $ $ \vdots $ $ u_M $ $ v_M $
Output Format
条件を満たす整数の書き込み方が存在しないならば、`No`を出力せよ。
存在するならば、頂点 $ v $ に書き込む整数を $ X_v $ として、以下の形式で出力せよ。答えが複数ある場合、どれを出力しても良い。
> Yes $ X_1 $ $ X_2 $ $ \dots $ $ X_N $
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 60 $
- $ 0\ \leq\ M\ \leq\ N(N-1)/2 $
- $ 1\ \leq\ u_i\