Короткая дорога курьера

Просмотр в формате PDF

Submit solution


Очки: 110
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

В городе есть n перекрестков, пронумерованных от 1 до n, и m двусторонних дорог между ними. Курьеру нужно доставить письмо, выехав с перекрестка s и добравшись до перекрестка t.

Каждая дорога соединяет ровно два перекрестка, а проезд по любой дороге считается за один участок пути. Требуется определить минимальное количество дорог, которое должен проехать курьер, чтобы попасть из s в t.

Если добраться до нужного перекрестка невозможно, выведите -1.

Входные данные

Первая строка содержит четыре целых числа n, m, s, t — количество перекрестков, количество дорог, номер перекрестка отправления и номер перекрестка назначения.

В следующих m строках содержатся описания дорог. Каждая дорога задается двумя целыми числами u и v — номерами перекрестков, которые она соединяет.

Выходные данные

Выведите одно целое число — минимальное количество дорог, которое нужно проехать курьеру, чтобы доставить письмо из s в t, либо -1, если такого маршрута не существует.

Ограничения

  • 1 <= n <= 100000
  • 0 <= m <= 200000
  • 1 <= s, t <= n
  • 1 <= u, v <= n
  • Дороги двусторонние.
  • Дорога не соединяет перекресток сам с собой.
  • Между одной и той же парой перекрестков не более одной дороги.

Примеры

Пример 1

Входные данные

2 1 1 2
1 2

Выходные данные

1
Пример 2

Входные данные

5 3 2 2
1 2
2 3
4 5

Выходные данные

0

Комментарии

Еще нет ни одного комментария.