Електронна пошта#10730

Електронна пошта

1 секунда
128 мегабайтів
Складна

Блог Аріадни сповнений смачними рецептами та корисними порадами щодо здорового і збалансованого способу життя. Не дивно, що він приваблює велику кількість читачів. Ця аудиторія тепер стабільна, і Аріадна вважає, що було б корисно, якби вони більше взаємодіяли і створили міцніше співтовариство, яке не обмежувалося б лише блогом.

Аріадна знає, що деякі з читачів вже є друзями або знайомими, і тому у них є адреси електронної пошти один одного. Вона вважає, що хорошим початком для розвитку спільноти було б, щоб у кожного був адрес електронної пошти кожного, щоб кожен міг зв'язатися з усією групою. Оскільки вона знає, що читачам її блогу також подобається робити речі "децентралізованим" способом, вона розробляє наступний протокол, який почне діяти з дня :

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

Ви досвідчений хакер і Вам вдалося отримати доступ до всіх адресних книг читачів блогу. Ви хочете здивувати і вразити Аріадну, повідомивши її про те, чи призведе запропонований нею процес до того, що кожен отримає адресу кожного іншого. Більш того, якщо успіх буде досягнутий, то Ви хочете оцінити скільки днів це займе. Більш точно, якщо процес увінчається успіхом, то Ви можете повідомити їй:

Вхідні дані

Перший рядок містить два цілих числа n~(2 \le n \le 10^5) і m~(1 \le m \le 10^5), що відповідають кількості читачів і кількості пар читачів, які спочатку мають адреси електронної пошти один одного. Читачі пронумеровані від до .

Кожен з наступних рядків містить два цілих числа і , що означають, що читачі і спочатку мають адреси електронної пошти один одного. Зверніть увагу, що у читача є адреса читача , і у читача є адреса читача .

Вихідні дані

Виведіть одне ціле число, рівне:

  • якщо цей процес не призведе до того, що всі врешті-решт отримають адреси електронної пошти всіх інших, або

  • розрахована необхідна кількість днів в іншому випадку. Зверніть увагу, що це число може дорівнювати .

Приклади

Пояснення до прикладу . Процес відбувається наступним чином:

У день о ранку:

  • Читач надсилає адресу читача читачу .

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адресу читача читачу .

У день після оновлення о вечора:

  • Адресна книга читача була оновлена і містить адреси читачів та .

  • Адресна книга читача була оновлена і містить адреси читачів та .

  • Адресна книга читача була оновлена і містить адреси читачів та .

  • Адресна книга читача була оновлена і містить адреси читачів та .

У день d + 1 о ранку:

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адреси читачів та читачам та .

У день d + 1 після оновлення о вечора:

  • Адресна книга читача була оновлена і містить адреси читачів та .

  • Процес завершився для читача , оскільки оновлення не було.

  • Процес завершився для читача , оскільки оновлення не було.

  • Адресна книга читача була оновлена і містить адреси читачів та .

У день d + 2 о ранку:

  • Читач надсилає адреси читачів та читачам та .

  • Читач надсилає адреси читачів та читачам та .

У день d + 2 після оновлення о вечора:

  • Процес завершився для читача , оскільки оновлення не було.

  • Процес завершився для читача , оскільки оновлення не було.

Останнє оновлення відбувається в день d + 1, через дні, що минули. Процес завершився для всіх у день d + 2, через дні, що минули. Вивід прикладу містить перше значення . Виведення другого значення є також правильною альтернативою.

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

Ми припускаємо, що база читачів стабільна, тобто жоден читач не йде і жоден додатковий читач не приєднується протягом всього процесу.

Ми припускаємо, що кожен знає адресу своєї електронної пошти; отримання власної адреси просто ігнорується.

Вам не обов'язково бути "послідовними" у відповідях на кілька тестів. Це означає, що Ви можете вивести значення для одного тесту і e + 1 для іншого.