
Se dă un arbore cu noduri numerotate de la la , înrădăcinat în nodul . O mutare de cal dintr-un nod către un nod constă în parcurgerea unui traseu , unde este părintele lui , este părintele lui , iar este un fiu al lui astfel încât (vezi imaginea din dreapta). Observăm cum mutarea se aseamănă unei mutări de cal pe tabla de șah.
Cerință
Date fiind și părinții fiecărui nod (nodul , fiind rădăcina, nu are părinte), să se determine:
- Numărul de noduri cu exact un fiu.
Date fiind, în plus, perechi de noduri, să se determine pentru fiecare pereche dată :
- Dacă se poate ajunge din nodul în nodul făcând succesiv mutări de cal. În caz afirmativ, răspunsul va fi , altfel .
- Numărul de trasee distincte ce pornesc din nodul și ajung în nodul făcând succesiv mutări de cal. Deoarece răspunsul poate fi destul de mare, se cere restul împărțirii acestuia la .
Date de intrare
Prima linie va conține numărul cerinței . A doua linie va conține numărul de noduri din arbore . A treia linie va conține numere , reprezentând părintele fiecărui nod din arbore (nodul , fiind rădăcina, nu are părinte). Oricare două numere consecutive de pe această linie sunt separate prin câte un spațiu.
Doar dacă , a patra linie va conține numărul de perechi , următoarele linii conținând numerele și , separate printr-un spațiu, corespunzătoare fiecărei perechi .
Date de ieșire
Dacă , se va afișa pe o singură linie numărul de noduri cu exact un fiu. În schimb, dacă , se vor afișa linii, fiecare conținând răspunsul la cerința corespunzător câte unei perechi din cele date.
Restricții și precizări
- pentru
- Dacă , atunci:
- și , pentru fiecare dintre cele perechi date.
- Pentru , două trasee și se consideră diferite dacă sau dacă există astfel încât .
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 56 | |
| 2 | 9 | și |
| 3 | 6 | |
| 4 | 5 | și |
| 5 | 8 | și pentru fiecare pereche dată numărul de trasee este nenul |
| 6 | 6 | și pentru fiecare pereche dată |
| 7 | 10 |
Exemplul 1
knight.in
1
7
1 1 3 3 3 4
knight.out
1
Explicație
Singurul nod din arbore care are exact un fiu este nodul .
Exemplul 2
knight.in
2
7
1 1 3 3 3 4
3
7 2
7 4
6 2
knight.out
1
0
1
Explicație
Cele trei exemple vizează același arbore cu noduri, schițat mai jos:

Sunt date perechi de noduri :
-
, : Există două trasee ce pleacă din și ajung în prin mutări de cal:
Așadar, pentru răspunsul este , iar pentru este .
-
, : Nu există niciun traseu ce pleacă din nodul și ajunge în nodul prin mutări succesive de cal, de unde răspunsul pentru ambele cerințe este .
-
, : Există un singur traseu ce pleacă din și ajunge în prin mutări de cal, anume: . Prin urmare, răspunsul pentru ambele cerințe este .
Exemplul 3
knight.in
3
7
1 1 3 3 3 4
3
7 2
7 4
6 2
knight.out
2
0
1
Explicație
Singura diferență față de exemplul anterior este numărul cerinței de rezolvat ( în loc de ). Răspunsurile corespund numărului de trasee distincte: , , respectiv .