Problem description
Brat Krzysia prowadzi zajęcia z Rachunku Prawdopodobieństwa dla Informatyków w Instytucie Informatyki. Uczęszczam na nie w tym semestrze. Pewnego dnia przychodzę na zajęcia i słyszę, jak prowadzący mówi: “Wiecie mam brata (Krzysia) i on ostatnio miał urodziny. W sumie to nic mu nie dałem. Ale prosił mnie o jedną rzecz. (imię i nazwisko autora tego zadania) do zadania pierwszego.”. Tak też się stało, poszedłem smutny do odpowiedzi. Oczywiście zadanie zrobiłem.
Krzysiowi nie spodobał się fakt, że jego brat wziął mnie do odpowiedzi tylko jeden raz. Na moje nieszczęście zna on algorytm wybierania ludzi do zadań swojego brata. Algorytm wybierania brata Krzysia jest dość prosty. Brat Krzysia dla każdej osoby wie, jaką osobę wybierze jako następną do odpowiedzi, ponadto, dla każdej osoby istnieje dokładnie jedna inna osoba, po której zostaje wybrana. Krzyś poprosił Cię, byś zrobił kilka zamian w liście jego brata, tak bym to ja był brany do odpowiedzi, jak najczęściej. Jednak ja chciałbym Cię prosić, byś wykazał się uczciwością i ułożył listę tak by była możliwe najbardziej uczciwością. W moim odczuciu lista jest uczciwa, gdy największy cykl osób, jest możliwe największy. Zrozumiałeś? – strzelam, że nie. Zatem poniżej formalne wytłumaczenie:
Osoby będziemy numerowali kolejnymi liczbami naturalnymi od 1 do N. Dla każdej osoby, dany jest jej następnik. Każda osoba ma innego następnika (nie ma pary osób o tym samym następniku). Biorąc pod uwagę, że wielkość grupy jest skończona, będą istniały cykle – takie ciągi osób, w których następnikiem ostatniej jest pierwsza i następnikiem i-tej osoby w ciągu jest i + 1-wsza osoba w ciągu. Tobie wolno wykonać K podmian – możesz wybrać dwie osoby i podmienić ich następników. Przykładowo, gdyby następnikiem osoby o numerze 1 była osoba o numerze 2, a następnikiem osoby o numerze 3 była osoba o numerze 5, to po podmianie następników osób o numerze 1 i 3, następnikiem osoby o numerze 1 będzie osoba o numerze 5, a następnikiem osoby o numerze 3 będzie osoba o numerze 2.
Napisz program, który wczyta ilość osób w grupie, możliwą liczbę zamian i ciąg następników i obliczy maksymalną długość najdłuższego cyklu po wykonaniu maksymalnie K kroków.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby całkowite N i K. W drugim wierszu wejścia znajdują się ciąg N liczb całkowitych A, i-ta z nich jest numerem następnika i-tej osoby.
Wyjście
W pierwszym (jedynym) wierszu wejścia należy wypisać jedną liczbę całkowitą – największą długość cyklu następników po wykonaniu maksymalnie K zamian.
Ograniczenia
1 ≤ N ≤ 100 000, 0 ≤ K ≤ 100 000, 1 ≤ Ai ≤ N.
Podzadania
W testach wartych łącznie 10 punktów dodatkowo zachodzi N ≤ 10.
W testach wartych łącznie 30 punktów dodatkowo zachodzi N ≤ 1 000.
Przykład
Input | Output | |
|
|
Input | Output | |
|
|
Input | Output | |
|
|