arb1

Time limit: 1s Memory limit: 64MB Input: Output:

Cerință

Vârcolacul Marian a hotărât că pe timp de noapte, beciul în care își ține murăturile trebuie închis. Pentru că are multe murături, beciul este format din NN camere conectate prin N−1N - 1 muchii (deci beciul are formă de arbore și are rădăcina în 11). Inițial, toate camerele sunt deschise.

Într-o operație, Marian poate alege două camere încă deschise xx și yy și să închidă toate camerele de pe drumul direct de la xx la yy, mai puțin LCA-ul lor.

Pentru ca o operație să fie validă, trebuie respectate următoarele două reguli:

  1. În fiecare operație, LCA-ul trebuie să fie diferit de xx și de yy.
  2. După fiecare operație, camerele care rămân deschise trebuie să fie în continuare conectate între ele. Mai exact, trebuie să se poată ajunge de la orice cameră rămasă deschisă la oricare alta, deplasându-ne exclusiv prin camere care nu au fost încă închise.
  • LCA (Cel mai mic strămoș comun) este definit ca fiind nodul cel mai apropiat de rădăcină de pe drumul direct de la xx la yy.

Care este numărul minim de operații astfel încât la final singura cameră deschisă să rămână rădăcina? (Marian va dori să lase o cameră deschisă pentru cazul în care i se va face foame peste noapte).

Date de intrare

Pe prima linie se află numărul natural NN. Pe următoarea linie se află N−1N - 1 numere naturale, al ii-lea număr reprezentând părintele camerei i+1i + 1.

Date de ieșire

Dacă acest lucru nu este posibil, se va afișa -1. Altfel, pe prima linie se va afișa KK, reprezentând numărul minim de operații. Pe următoarele KK linii se vor afișa două valori xx și yy, reprezentând operațiile alese.

Restricții și precizări

  • 1≤N≤100 0001 \leq N \leq 100 \ 000;
  • 1≤p[i]≤N1 \leq p[i] \leq N și p[i]≠i+1p[i] \neq i + 1;
  • Pentru 1≤N≤10001 \leq N \leq 1000, se acordă 30 de puncte;
  • Pentru determinarea corectă a numărului minim de operații, se acordă 20% din punctajul testului;
  • Dacă există mai multe soluții care obțin numărul minim de operații, se va accepta oricare dintre acestea.

Exemplul 1

stdin

3
1 1

stdout

1
2 3

Explicație

Arborele este format din rădăcina 11, care are doi fii: 22 și 33.
Alegem x=2x = 2 și y=3y = 3. LCA-ul lor este 11 (care este diferit de 22 și de 33).
Drumul direct între 22 și 33 este 2−1−32 - 1 - 3. Se închid camerele 22 și 33, excepție făcând LCA-ul (11).
Singura cameră rămasă deschisă este 11, iar condiția de conectivitate este respectată. Numărul minim de operații este 11.

Exemplul 2

stdin

2
1

stdout

-1

Explicație

Arborele este format din rădăcina 11 și fiul ei 22. Singura cameră care trebuie închisă este 22. Nu putem alege două camere deschise xx și yy astfel încât LCA-ul să fie diferit de ambele (dacă am alege 11 și 22, LCA-ul lor ar fi 11, ceea ce ar încălca prima regulă a operației valide). Astfel, problema nu are soluție.

Log in or sign up to be able to send submissions!