Detalii evaluare #64820522

Rezumat problemă

#4980

Se dă un arbore cu N noduri numerotate de la 1 la N, înrădăcinat în nodul 1. O mutare de cal dintr-un nod u către un nod v constă în parcurgerea unui traseu u → x → y → v, unde x este părintele lui u, y este părintele lui v, iar v este un fiu al lui y astfel încât v ≠ x. Observăm cum mutarea se aseamănă unei mutări de cal pe tabla de șah.

Date fiind N și părinții fiecărui nod P2, . . . , Pn (nodul 1, fiind rădăcina, nu are părinte), să se determine:

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

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

2. Dacă se poate ajunge din nodul a în nodul b făcând succesiv mutări de cal. În caz afirmativ, răspunsul va fi 1, altfel 0.
3. Numărul de trasee distincte ce pornesc din nodul a și ajung în nodul b 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 + 7.

OJI 2026, clasele 11-12
Fișiere Candale Silviu (silviu) Lucian-Andrei Badea concurs

Detalii

Problema Knight Operații I/O knight.in/knight.out
Limita timp 1 secunde Limita memorie Total: 256 MB / Stivă 8 MB
Id soluție #64820522 Utilizator morariu dimitri (testeptmine)
Fișier knight.cpp Dimensiune 1.95 KB
Data încărcării 03 Iunie 2026, 15:51 Scor/rezultat 56 puncte

Evaluare

Mesaj compilare

knight.cpp: In function ‘void DFS(int)’:
knight.cpp:50:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   50 |     for(int i = 0; i < sons[node].size(); ++i)
      |                    ~~^~~~~~~~~~~~~~~~~~~
knight.cpp: In function ‘bool posibilTraseu()’:
knight.cpp:65:1: warning: no return statement in function returning non-void [-Wreturn-type]
   65 | }
      | ^
knight.cpp: In function ‘int nrTrasee(int, int)’:
knight.cpp:70:1: warning: no return statement in function returning non-void [-Wreturn-type]
   70 | }
      | ^

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
1 0.005 secunde OK. 8 8
2 0.01 secunde OK. 8 8
3 0.007 secunde OK. 8 8
4 0.016 secunde OK. 8 8
5 0.036 secunde OK. 8 8
6 0.021 secunde OK. 8 8
7 0.019 secunde OK. 8 8
8 0.005 secunde Caught fatal signal 6 3 0
9 0.004 secunde Caught fatal signal 6 3 0
10 0.009 secunde Caught fatal signal 6 3 0
11 0.01 secunde Caught fatal signal 6 2 0
12 0.033 secunde Caught fatal signal 6 2 0
13 0.051 secunde Caught fatal signal 6 1 0
14 0.041 secunde Caught fatal signal 6 1 0
15 0.005 secunde Caught fatal signal 6 1 0
16 0.004 secunde Caught fatal signal 6 2 0
17 0.004 secunde Caught fatal signal 6 2 0
18 0.045 secunde Caught fatal signal 6 2 0
19 0.043 secunde Caught fatal signal 6 3 0
20 0.043 secunde Caught fatal signal 6 3 0
21 0.035 secunde Caught fatal signal 6 2 0
22 0.037 secunde Caught fatal signal 6 2 0
23 0.038 secunde Caught fatal signal 6 2 0
24 0.048 secunde Caught fatal signal 6 2 0
25 0.037 secunde Caught fatal signal 6 2 0
26 0.049 secunde Caught fatal signal 6 2 0
27 0.052 secunde Caught fatal signal 6 1 0
28 0.043 secunde Caught fatal signal 6 1 0
29 0.04 secunde Caught fatal signal 6 1 0
30 0.056 secunde Caught fatal signal 6 1 0
Punctaj total 56

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema Knight face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.

Du-te sus!