Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2023

Old page Regulations Schedule RODO info Ranking

Problem description


Spacer kontratakuje
(spacer-kontratakuje)
Memory limit: 256 MB
Time limit: 4.00 s

Jasio postanowił zabrać dziewczynę do miasta i tam się z nią przespacerować. Chciałby, żeby ich spacer był długi i żeby obok żadnego skrzyżowania nie przechodzili dwukrotnie. Miasto to jednak trochę inny świat niż las i tutaj obowiązują inne reguły: drogi (nawet te dla pieszych!) są jednokierunkowe i biegną zawsze pomiędzy skrzyżowaniami. Żadne dwie drogi się nie przecinają poza skrzyżowaniami, ale niektóre z nich mogą przebiegać tunelami i estakadami.

Jasio doskonale zdaje sobie sprawę, że znalezienie spaceru, który przebiega po jak największej liczbie skrzyżowań jest kłopotliwym zadaniem, dlatego postanowił Ci pomóc (oczywiście jest już jasne, że ponownie to Ty będziesz musiał(a) rozwiązać to zadanie). Konkretniej: zauważył, że drogi w mieście układają się w taki sposób, że nie jest możliwe znalezienie cyklicznej wyprawy po więcej niż 10 drogach, tak żeby przejść każdą z tych dróg dokładnie jeden raz i wrócić do punktu startowego.

Jasio i dziewczyna przyjadą na spacer samochodem, a gdy ich spacer się skończy, wrócą do swoich domów komunikacją miejską, mogą więc rozpocząć i zakończyć wyprawę przy dowolnym skrzyżowaniu.

Napisz program, który: wczyta opis skrzyżowań i dróg w mieście Jasia, wyznaczy największą liczbę skrzyżowań, które może odwiedzić z dziewczyną podczas jednego spaceru, tak aby obok żadnego skrzyżowania nie przejść więcej niż raz i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N oraz M, oddzielone pojedynczym odstępem i określające kolejno: liczbę skrzyżowań oraz liczbę jednokierunkowych dróg między nimi. W kolejnych M wierszach znajduje się opis kolejnych dróg. Opis każdej drogi składa się z dwóch liczb naturalnych ui oraz vi oddzielonych pojedynczym odstępem i określających istnienie drogi od skrzyżowania numer ui do skrzyżowania numer vi.

Skrzyżowania numerowane są kolejnymi liczbami naturalnymi od 1 do N włącznie.

Wyjście

W pierwszym (jedynym) wierszu wyjścia należy wypisać największą liczbę skrzyżowań, które można odwiedzić podczas spaceru.

Ograniczenia

1 ≤ N ≤ 5 000, 0 ≤ M ≤ 200 000.

Przykład

Input Output Explanation
9 11
2 1
5 4
1 5
4 2
5 3
3 6
2 8
8 9
9 7
7 8
6 7
9

Spacer mógłby przebiegać następująco: wysiadka przy skrzyżowaniu numer 4, następnie przejście do skrzyżowań numer 2, 1, 5, 3, 6, 7, 8, 9 i powrót do domów komunikacją miejską.