Se numeşte arbore cu rădăcină o structură care conţine un nod special denumit rădăcina arborelui şi (unde ) arbori cu rădăcină (denumiţi subarbori ai rădăcinii). Nodul rădăcină al fiecărui arbore este denumit fiu al rădăcinii arborelui şi este conectat printr-o muchie de rădăcina arborelui.
Doi arbori cu rădăcină sunt identici dacă rădăcinile celor doi au acelaşi număr de subarbori şi aceştia sunt identici (mai exact, pentru orice subarborele al primului este identic cu subarborele al celui de-al doilea).
O termită poate „ciopli” un arbore acţionând astfel:
- termita porneşte de la rădăcina arborelui;
- la fiecare moment (în orice nod s-ar afla), termita poate face una dintre următoarele operaţii:
- stă în nod şi mănâncă cea mai din dreapta muchie, eliminând astfel cel mai din dreapta fiu şi subarborele corespunzător (acestea cad şi vor fi mâncate de alte termite leneşe);
- înaintează pe muchia din dreapta, spre fiul rămas cel mai din dreapta al nodului în care se află;
- se opreşte.
Două termite prietene aleg doi arbori şi îi cioplesc în modul descris până când obţin doi arbori identici.
Similaritatea dintre doi arbori este egală cu numărul maxim de noduri care rămân în fiecare dintre cei doi arbori identici obţinuţi prin cioplire.
Cerinţă
Dându-se doi arbori (un arbore model şi un arbore de evaluat) să se calculeze pentru fiecare nod al arborelui de evaluat similaritatea dintre subarborele cu rădăcina în nodul respectiv şi arborele model dat.
Date de intrare
Pe prima linie a fişierului de intrare arbfind.in
se găseşte un număr natural reprezentând numărul de noduri din arborele model, nodurile fiind numerotate de la la . Pe liniile se va afla descrierea arborelui model. Mai exact, pe linia se va afla un număr natural reprezentând numărul de fii direcţi ai nodului , urmat de numere naturale cuprinse între şi , reprezentând în ordinea de la stânga la dreapta fiii nodului .
Linia va conţine un număr natural reprezentând numărul de noduri din arborele de evaluat. Liniile vor conţine descrierea arborelui de evaluat, în mod analog cu descrierea arborelui model.
Date de ieşire
Fişierul de ieşire arbfind.out
va conţine linii. Pe linia se va afla similaritatea subarborelui cu rădăcina în nodul faţă de arborele model.
Restricţii şi precizări
- Rădăcina arborilor este întotdeauna nodul .
Exemplu
arbfind.in
4
2 2 3
1 4
0
0
9
2 2 3
2 4 5
2 6 7
1 8
0
0
1 9
0
0
arbfind.out
3
4
2
2
1
1
2
1
1
Explicație
Arborele model
Arbore evaluat
De exemplu, pentru nodul din arborele model s-au eliminat în ordine subarborii cu rădăcinile şi . Din arborele model se elimină subarborele cu rădăcina .