CF183C Cyclic Coloring

题目描述

给定一个有向图 $G$,包含 $n$ 个顶点和 $m$ 条有向边(允许重边和自环)。你需要使用 $k$ 种颜色($k \le n$)给图中的每个顶点进行染色,使得对于所有从顶点 $u$ 指向顶点 $v$ 的有向边,顶点 $v$ 必须被染为 $u$ 的下一个颜色。 颜色从 $1$ 到 $k$ 编号,且按照循环排列。这意味着对于每个颜色 $i$($i

输入格式

第一行包含两个用空格分隔的整数 $n$ 和 $m$($1 \le n, m \le 10^{5}$),表示该有向图的顶点数和有向边数。 接下来 $m$ 行,每行包含两个用空格分隔的整数 $a_i$ 和 $b_i$($1 \le a_i, b_i \le n$),表示第 $i$ 条边从顶点 $a_i$ 指向顶点 $b_i$。 允许重边和自环。

输出格式

输出一个整数,即可以用于染色该有向图的最大颜色数(即 $k$,如题目所述)。注意,$k$ 必须满足 $1 \le k \le n$。

说明/提示

对于第一个样例,当 $k=2$ 时,图中两种颜色如图所示(箭头表示从当前颜色到下一种颜色的转移)。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/5fc25b3e1baecb0cc286fd1a3b08fbd0e1f5c4eb.png) 当 $k=2$ 时,一种可行的染色方式如下。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/8c36834819409d82c5c1224a04a2fcf860f0bd11.png) 可以证明在本例中不存在更大的 $k$。 对于第二个样例,$k=5$ 时,各种颜色如图: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/6fb597ece64567e61db8b5ed6d1b98f36788eb3f.png) 一种可行的染色如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/ddb3d14ab97f674110eb33ef458d1f97e9ea4ac4.png) 对于第三个样例,$k=3$ 时,各种颜色如图: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/a77c6758c9d6428611a620004da04ba72186df31.png) 一种可行的染色如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF183C/5dc5850b22b6955a11cc6496cce3c42d93bc37c7.png) 由 ChatGPT 5 翻译