knight

Time limit: 1s Memory limit: 256MB Input: knight.in Output: knight.out


Se dă un arbore cu NN noduri numerotate de la 11 la NN, înrădăcinat în nodul 11. O mutare de cal dintr-un nod uu către un nod vv constă în parcurgerea unui traseu uxyvu \to x \to y \to v, unde xx este părintele lui uu, yy este părintele lui xx, iar vv este un fiu al lui yy astfel încât vxv \neq x (vezi imaginea din dreapta). Observăm cum mutarea se aseamănă unei mutări de cal pe tabla de șah.

Cerință

Date fiind NN și părinții fiecărui nod p2,,pNp_2, \ldots, p_N (nodul 11, fiind rădăcina, nu are părinte), să se determine:

  1. Numărul de noduri cu exact un fiu.

Date fiind, în plus, QQ perechi de noduri, să se determine pentru fiecare pereche dată (a,b)(a, b):

  1. Dacă se poate ajunge din nodul aa în nodul bb făcând succesiv mutări de cal. În caz afirmativ, răspunsul va fi 11, altfel 00.
  2. Numărul de trasee distincte ce pornesc din nodul aa și ajung în nodul bb făcând succesiv mutări de cal. Deoarece răspunsul poate fi destul de mare, se cere restul împărțirii acestuia la 109+710^9 + 7.

Date de intrare

Prima linie va conține numărul cerinței C{1,2,3}C \in \{1, 2, 3\}. A doua linie va conține numărul de noduri din arbore NN. A treia linie va conține N1N - 1 numere p2,p3,,pNp_2, p_3, \ldots, p_N, reprezentând părintele fiecărui nod din arbore (nodul 11, 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ă C{2,3}C \in \{2, 3\}, a patra linie va conține numărul de perechi QQ, următoarele QQ linii conținând numerele aa și bb, separate printr-un spațiu, corespunzătoare fiecărei perechi (a,b)(a, b).

Date de ieșire

Dacă C=1C = 1, se va afișa pe o singură linie numărul de noduri cu exact un fiu. În schimb, dacă C{2,3}C \in \{2, 3\}, se vor afișa QQ linii, fiecare conținând răspunsul la cerința CC corespunzător câte unei perechi (a,b)(a, b) din cele QQ date.

Restricții și precizări

  • C{1,2,3}C \in \{1, 2, 3\}
  • 1N200 0001 \leq N \leq 200 \ 000
  • 1pi<i1 \leq p_i < i pentru 2iN2 \leq i \leq N
  • Dacă C{2,3}C \in \{2, 3\}, atunci:
    • 1Q200 0001 \leq Q \leq 200 \ 000
    • 1a,bN1 \leq a, b \leq N și aba \neq b, pentru fiecare dintre cele QQ perechi date.
  • Pentru C=3C = 3, două trasee s1s2sks_1 \to s_2 \to \ldots \to s_k și s1s2ss'_1 \to s'_2 \to \ldots \to s'_\ell se consideră diferite dacă kk \neq \ell sau dacă există 1ik1 \leq i \leq k astfel încât sisis_i \neq s'_i.
# Punctaj Restricții
1 56 C=1C = 1
2 9 C=2C = 2 și N100N \leq 100
3 6 C=2C = 2
4 5 C=3C = 3 și N100N \leq 100
5 8 C=3C = 3 și pentru fiecare pereche dată numărul de trasee este nenul
6 6 C=3C = 3 și pentru fiecare pereche dată pb=1p_b = 1
7 10 C=3C = 3

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 44.

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 N=7N = 7 noduri, schițat mai jos:

Sunt date Q=3Q = 3 perechi de noduri (a,b)(a, b):

  1. a=7a = 7, b=2b = 2: Există două trasee ce pleacă din 77 și ajung în 22 prin mutări de cal:

    • 74353127 \to 4 \to 3 \to 5 \to 3 \to 1 \to 2
    • 74363127 \to 4 \to 3 \to 6 \to 3 \to 1 \to 2

    Așadar, pentru C=2C = 2 răspunsul este 11, iar pentru C=3C = 3 este 22.

  2. a=7a = 7, b=4b = 4: Nu există niciun traseu ce pleacă din nodul 77 și ajunge în nodul 44 prin mutări succesive de cal, de unde răspunsul pentru ambele cerințe este 00.

  3. a=6a = 6, b=2b = 2: Există un singur traseu ce pleacă din 66 și ajunge în 22 prin mutări de cal, anume: 63126 \to 3 \to 1 \to 2. Prin urmare, răspunsul pentru ambele cerințe este 11.

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 (C=3C = 3 în loc de C=2C = 2). Răspunsurile corespund numărului de trasee distincte: 22, 00, respectiv 11.

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