Zadanie
Cesta kráľovstvom
Počet bodov: 20
Žaby rady skáču po kameňoch. To je prípad aj malých žabiek. Po tom, čo sa jedna preskákala až do vedľajšej rieky sa rozhodli staršie žaby problém riešiť. Žabie kráľovstvo sa skladá z niekoľkých kameňov. Z každého z nich vedia našťastie skočiť najviac na jeden iný kameň aby bola navigácia jednoduchá. Kedže sa však nikomu nechce celý deň mladé žabky doprevádzať tak by si radi ušetrili prácu a našli v kraľovstve nejaký okruh. Trasu, po ktorej môžu poslať mladšie žabky na prechádzku (preskáčku?) pričom ich bude strážiť na jednom mieste staršia žaba a mladšie žabky budú celý deň skákať v kruhu. Pomôžte žabám a zistite, či existuje takýto okruh v ich kráľovstve.
Úloha
Zistite, či v žabom kráľovstve existuje cyklus z kameňov. V kráľovstve sa nachádza \(n\) kameňov očíslovaných \(0, 1, \ldots , n-1\). Pre každý kameň máme informáciu na ktorý kameň sa z neho dá priamo preskočiť alebo informáciu, že taký kameň neexistuje.
Vstup
Vstup sa skladá z dvoch riadkov. Na prvom sa nachádza \(n\) – počet kameňov v žabom kráľovstve. V druhom riadku sa nachádza \(n\) medzerou oddelených čísiel, pričom \(i\)-te číslo \(x_i\) (\(-1\leq x_i \leq n-1\)) buď označuje číslo kameňa, na ktorý sa dá dostať na jeden skok z kameňa \(i\), alebo -1 ak takýto kameň neexistuje. Môžete predpokladať, že sa nestane, že z kameňa sa dá preskočiť na ten istý kameň. Teda nikdy nebude platiť, že \(x_i = i\).
Sú tri sady vstupov.
V prvej sade \(n\) neprekročí 100. V druhej sade \(n\) neprekročí \(10\,000\). V tretej sade \(n\) neprekročí \(100\,000\).
Výstup
Na jediný riadok výstupu vypíšte reťazec ANO
alebo NIE
podľa toho či existuje alebo neexistuje v žabom kráľovstve cyklus kameňov. Nezabudnite za týmto reťazcom vypísať znak konca riadku.
Príklad
Input:
6
1 2 3 4 5 0
Output:
ANO
Celé kráľovstvo tvorí jeden veľký okruh v ktorom sú zapojené všetky kamene.
Input:
6
5 4 3 -1 2 -1
Output:
NIE
Nech už žabka začne na hociktorom kameni, vždy skončí na takom, z ktorého nemá kam ďalej skočiť.
Pre odovzdávanie sa musíš prihlásiť.