#5180. XOR Neighbors

0

XOR Neighbors

XOR Neighbors

题目描述

你被给予一个包含 NN) 个顶点和 MM 条边的简单无向图。第 ii 条边在顶点 uiu_i 和 viv_i 之间双向连接。 判断是否存在一种方法,在图的每个顶点上写一个介于 11 到 260−12^{60} - 1(含)之间的整数,使得满足以下条件:

对于每个度数至少为 11 的顶点 vv,其相邻顶点上所写数字的全部 XOR(不包含 vv 本身)为 00。

什么是 XOR?

两个非负整数 AA 和 BB 的 XOR,记作 A⊕BA \oplus B,定义如下:

在 A⊕BA \oplus B 的二进制表示中,位置为 2k (k≥0)2^k \, (k \geq 0) 的位为 11 当且仅当 AA 和 BB 的二进制表示在该位置的位恰好有一个为 11。否则,该位为 00。

例如,3⊕5=63 \oplus 5 = 6(二进制:011⊕101=110011 \oplus 101 = 110)。

一般地,kk 个整数 p1,…,pkp_1, \dots, p_k 的逐位 XOR 定义为 $(\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)$。可以证明这与 p1,…,pkp_1, \dots, p_k 的顺序无关。

输入格式

输入从标准输入按以下格式给出: NN MM u1u_1 v1v_1 u2u_2 v2v_2 ⋮\vdots uMu_M vMv_M

输出格式

如果不存在满足条件的写法,输出 NoNo。 否则,令 XvX_v 为写在顶点 vv 上的整数,并按以下格式输出一个解。如果存在多个解,任意一个均可接受。 Yes X1X_1 X2X_2 …\dots XNX_N

3 3
1 2
1 3
2 3
Yes
4 4 4
2 1
1 2
No
1 0
Yes
1
4 5
1 2
1 3
2 3
2 4
3 4
Yes
12 4 4 8

提示

1≤N≤601 \leq N \leq 60 0≤M≤N(N−1)/20 \leq M \leq N(N-1)/2 1 \leq u_i < v_i \leq N (ui,vi)≠(uj,vj)(u_i, v_i) \neq (u_j, v_j) 当 i≠ji \neq j。 所有输入值均为整数。其它可接受的解包括写成 (2,2,2)(2,2,2) 或 (3,3,3)(3,3,3)。
可以写任意介于 11 到 260−12^{60} - 1 之间的整数。

标签: AtCoder|abc366G

来源

AtCoder|abc366G