Надіслати розв'язок
Бали:
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
Коментарі