AT_abc376_d [ABC376D] Cycle
题目描述
有一个包含 $N$ 个顶点和 $M$ 条边的简单有向图,顶点编号为 $1$ 到 $N$。第 $i$ 条边 $(1 \leq i \leq M)$ 是一条从顶点 $a_i$ 指向顶点 $b_i$ 的有向边。
请判断是否存在包含顶点 $1$ 的环路。如果存在,请输出所有包含顶点 $1$ 的环路中边数最少的环路的边数;如果不存在,请输出 $-1$。
输入格式
输入以以下格式从标准输入读入。
> $N$ $M$
> $a_1$ $b_1$
> $a_2$ $b_2$
> $\vdots$
> $a_M$ $b_M$
输出格式
如果存在包含顶点 $1$ 的环路,则输出所有包含顶点 $1$ 的环路中边数最少的环路的边数。否则输出 $-1$。
说明/提示
### 限制条件
- $2 \leq N \leq 2 \times 10^5$
- $1 \leq M \leq \min\left(\frac{N(N-1)}{2},\ 2 \times 10^5\right)$
- $1 \leq a_i \leq N$
- $1 \leq b_i \leq N$
- $a_i \neq b_i$
- 如果 $i \neq j$,则 $(a_i, b_i) \neq (a_j, b_j)$ 且 $(a_i, b_i) \neq (b_j, a_j)$
- 输入的所有值均为整数
### 样例解释 1
顶点 $1 \to$ 顶点 $2 \to$ 顶点 $3 \to$ 顶点 $1$ 构成一个边数为 $3$ 的环路,这是唯一一个包含顶点 $1$ 的环路。
由 ChatGPT 4.1 翻译