Надіслати розв'язок

Бали: 30,00 (partial)
Time limit: 2.0s
Java 8 4.0s
Python 3 4.0s
mono C# 4.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem types

Дмитрик захопився вивченням графів і сьогодні він намагається розв'язати задачу, яка його особливо захопила.

Отже, є простий орієнтований граф з ~N~ вершинами та ~M~ ребрами. Вершини пронумеровані від 1 до ~N~. ~I~-те ребро (~1 \le i \le M~) спрямоване від вершини ~a_i~ до вершини ~b_i~.

Дмитрик хоче визначити, чи існує такий цикл, що містить вершину 1, і якщо такі цикли існують, то треба знайти мінімальну кількість ребер серед таких циклів.

Обмеження

  • ~2 \le N \le 2 \times 10^5~
  • ~1 \le M \le min(\frac{N(N-1)}{2},2 \times 10^5)~
  • ~1 \le a_i \le N~
  • ~1 \le b_i \le N~
  • ~a_i \neq b_i~
  • ~(a_i, b_i) \neq (a_j, b_j)~ і ~(a_i,b_i) \neq (b_j,a_j)~, якщо ~i \neq j~
  • Усі вхідні значення є цілими числами.

Input

Перший рядок вхідного потоку містить цілі числа ~N, M~.

Наступні ~M~ рядків містять цілі числа ~a_i, b_i~. Числа розділяються пропуском.

Output

Якщо існують цикли, які містять вершину 1, то виведіть мінімальну кількість ребер серед таких циклів або -1 у випадку, коли такого циклу немає.

Sample Input 1

3 3
1 2
2 3
3 1

Sample Output 1

3

Sample Input 2

3 2
1 2
2 3

Sample Output 2

-1

Sample Input 3

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

Sample Output 3

4

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.