Undeva într-o pădure din Himalaya, un panda roșu este nevoit să se cațere într-un arbore foarte înalt. Din păcate, acestui panda îi este frică de înălțimi și vă zice că nu are curaj să urce mai sus de nivelul . Astfel, se întreabă dacă l-ați putea ajuta să-și imagineze cum poate face arborele să fie mai puțin înalt.
Se dă descrierea unui arbore cu rădăcină fixă în nodul . Considerăm nivelul rădăcinii ca fiind nivelul , nivelul copiilor săi ca nivelul și așa mai departe. Arborele poate fi modificat prin următoarea operație în doi pași:
- Se taie oricare muchie din graf.
- Se adaugă o nouă muchie în graf.
Cerință
Se cer numărul minim de operații și descrierea acestora pentru a transforma arborele dat într-un arbore unde toate nodurile au nivelul cel mult .
Date de intrare
Pe prima linie a fișierului de intrare redpanda.in
se dau , care reprezintă numărul de noduri din arbore, respectiv , care este nivelul maxim dorit. Pe următoarele linii se regăsesc câte două numere întregi și , reprezentând o muchie din arbore între nodurile și .
Date de ieșire
Pe prima linie a fișierului de ieșire redpanda.out
se află numărul minim de operații . Pe următoarele linii se vor afla câte patru întregi , , și , ce descriu operația: se taie muchia dintre și și se adaugă muchie între și .
Operațiile descrise trebuie să respecte următoarele reguli:
- Să nu taie o muchie ce nu există.
- Să nu adauge o muchie deja existentă.
- Să nu adauge o muchie de la un nod la el însuși.
- La final graful rezultat să fie un arbore. După prima operație și până înainte de ultima operație, graful are voie să nu fie arbore.
Restricții și precizări
# | Punctaj | Restricții |
---|---|---|
1 | 7 | |
2 | 12 | Muchiile arborelui sunt . |
3 | 13 | |
4 | 17 | |
5 | 51 | Fără restricții suplimentare |
Exemplu
redpanda.in
8 4
1 2
2 3
3 4
4 5
4 6
6 7
7 8
redpanda.out
1
3 4 6 1
Explicație
Tăiem muchia dintre nodurile și și adăugăm o nouă muchie intre nodurile și .