#P3126. 「COCI 2018.10」Teoretičar

「COCI 2018.10」Teoretičar

题目描述

译自 COCI 2018/2019 Contest #1 T5「Teoretičar

有这样一个二分图上的问题:给你一个二分图,请用尽量少的颜色给边染色,使得每个顶点的出边颜色互不相同。

你只需要解决这个问题的放宽限制的版本,现在假设对于给定二分图的答案是 CC,记 XX 是大于等于 CC 的最小的 22 的整次幂,你只需要给出一个方案,使得颜色数量不多于 XX

输入格式

第一行三个正整数 L,R,ML, R, M,表示二分图左部点数,右部点数以及边数。

接下来 MM 行,每行两个整数 ai,bi(1aiL,1biR)a_i, b_i(1\le a_i \le L, 1\le b_i \le R),表示左部到右部的一条连边。保证没有重边。

输出格式

第一行输出一个正整数 KK,表示你所用的颜色数。

接下来 MM 行每行一个正整数 ci(1ciK)c_i(1\le c_i \le K),表示第 ii 条边的颜色。

3 3 5
1 1
1 2
2 2
2 3
3 3
2
1
2
1
2
1
2 4 4
1 1
1 2
1 3
2 4
4
1
2
3
4

数据范围与提示

对于 20%20\% 的数据,保证 L,R100L, R \le 100

对于 40%40\% 的数据,保证 L,R5×103L, R \le 5 \times 10^3

对于 100%100\% 的数据,保证 1L,R105,1M5×1051\le L, R\le 10^5, 1\le M \le 5\times 10^5