AT_bogosortcontest_div1_g Source to Sink

题目描述

有一个包含 $N$ 个顶点、$M$ 条边的简单有向图 $G$。顶点编号为 $1$ 到 $N$,第 $i$ 条边是从顶点 $u_i$ 指向顶点 $v_i$ 的有向边。 你可以任意次执行以下操作: - 选择 $G$ 中入度为 $0$ 的顶点 $v$,将所有以 $v$ 为端点的边的方向反转。 请求出最多可以执行操作的次数。不过,如果操作可以无限进行,则报告这一点。 给定 $T$ 个测试用例,请分别求出答案。

输入格式

输入按以下形式从标准输入给出。 > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每个测试用例按以下形式给出。 > $N$ $M$ > $u_1$ $v_1$ > $u_2$ $v_2$ > $\vdots$ > $u_M$ $v_M$

输出格式

输出 $T$ 行。第 $t$ 行输出第 $t$ 个测试用例的答案。 对于每个测试用例,输出最多可以执行操作的次数。如果操作可以无限进行,则输出 `-1`。

说明/提示

### 样例解释 1 对于第 $1$ 个测试用例,可以按如下方式操作,从而执行 $2$ 次操作。 - 对顶点 $2$ 执行操作。第 $2$、$3$ 条边的方向被反转。 - 对顶点 $5$ 执行操作。第 $3$、$6$ 条边的方向被反转。 无法执行 $3$ 次以上操作,因此输出 $2$。 对于第 $2$ 个测试用例,通过交替对顶点 $1$、顶点 $2$ 执行操作,可以无限继续操作。 对于第 $3$ 个测试用例,可以对顶点 $3$ 任意多次执行操作。 对于第 $4$ 个测试用例,一次操作也无法执行。 ### 约束 - $1 \leq T \leq 5 \times 10^4$ - $2 \leq N \leq 10^5$ - $1 \leq M \leq \min(N(N-1), 2 \times 10^5)$ - $1 \leq u_i, v_i \leq N$ - $u_i \neq v_i$ - $(u_i,v_i) \neq (u_j,v_j)\ (i \neq j)$ - 所有测试用例中 $N$ 的总和不超过 $10^5$ - 所有测试用例中 $M$ 的总和不超过 $2 \times 10^5$ - 输入中的所有数值均为整数 由 DeepSeek V4.1 Flash 翻译。