UOJ Logo

NOI.AC

1S 666MB
Statistics

Lyra 对图的对称性很有研究,她格外喜欢一类对称性很强的图,记为 Dk,其中 k 是一个非负整数,Dk 是一个有 2k 个节点的图,若把节点编号为 02k1,则两个节点之间连边当且仅当两个节点的编号的异或是某 2 的次幂。

Lyra 还特别喜欢研究图的乘积,记 G1=(V1,E1),G2=(V2,E2),则 G1×G2 定义为

(V1×V2,{((u1,u2),(v1,v2))(G1×G2)2|u1=v1(u2,v2)E2u2=v2(u1,v1)E1})

即对点做笛卡尔积后,两个新点之间连边当前仅当其中一个点在对应原图中相同,另一个点在原图中有直接连边。

Lyra 曾经有一个 Evan 送给她的无向图 G 可惜她把这个图弄丢了,现在 Lyra 只能通过以前的实验数据来推测 G

Lyra 有一个图 H,且已知其同构于 G×Dk,并且可以假设不存在任何大于零的整数 k1 和无向图 G1 使得 G1×Dk1 同构与 G

Lyra 想请你还原出 G 并向她证明这确实是一个可行的 G,为此,你要找出可行的 k 并对 H 进行重标号。

输入格式

第一行两个整数 n,m 表示点数和边树。

接下来 m 行每行两个整数 u,v 表示一条无向边。

输出格式

第一行输出一个整数 k 表示找到的 k

接下来 n 行,每行一个整数 ti 和一个长度为 k01si

要求:

每个 [1,n2k] 内的整数都要在 ti 中出现恰好 2k 次。

每个长度为 k01 串要在 si 中出现恰好 n2k 次。

(ti,si) 有序对不存在重复。

存在一个点数 n2k 的图 G=([1,n2k],E),对于任意两个点 u,vu,v 之间有边当且仅当 (tu,tv)Esu=svtu=tvsusv=2p。(p 为任意非负整数, 表示异或)。

样例输入输出

样例输入1

4 4
1 2
3 4
1 4
2 3
####样例输出1
2
1 00
1 01
1 11
1 10

样例输入2

6 9
1 2
2 3
3 1
4 5
5 6
6 4
1 4
2 5
3 6

样例输出2

1
1 0
2 0
3 0
1 1
2 1
3 1

样例输入3

/equipoise/ex_equipoise3.in

样例输出3

/equipoise/ex_equipoise3.ans

数据范围及约定

对于全部数据 1n,m2×105.

K 表示答案中可行的 k

Subtask 1[9pts]:}

n20.

Subtask 2[13pts]:}

n100.

Subtask 3[10pts]:}

n=2K1000.

Subtask 4[25pts]:}

n1000.

Subtask 5[10pts]:}

n=2K105.

Subtask 6[33pts]:}

n105.

时间限制:1s

空间限制:666MB

下载

样例数据下载