Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2025-03-27 08:20:07.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:arrows.in, arrows.outSursăad-hoc
AutorRobert VargaAdăugată decypryCiprian Oprisa cypry
Timp execuţie pe test1 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Arrows

Jocul Arrows se desfăşoară pe o tablă cu N căsuţe. Fiecare căsuţă este legată cu o săgeată de o altă căsuţă. Pornind de la o căsuţă putem urmări săgeţile să ajungem în altă căsuţa de oricâte ori.

Să se determine în câte moduri putem alege două căsuţe A şi B astfel încât putem ajunge de la A la B dar nu şi invers.

Date de intrare

Fişierul de intrare arrows.in conţine pe prima linie numărul de teste T. Fiecare test este format din două linii. Pe prima linie a fiecărui test se află numărul N, reprezentând numărul de căsuţe. Pe a doua linie a fiecărui test se află un şir de N numere A[i], separate prin câte un spaţiu, reprezentând pentru fiecare i = 1, 2, ..., N, căsuţa unde arată săgeata din căsuţa i.

Date de ieşire

În fişierul de ieşire arrows.out se va tipări câte o linie pentru fiecare test cu răspunsul la întrebare.

Restricţii

  • 1 ≤ T ≤ 20
  • 2 ≤ N ≤ 500000
  • 1 ≤ A[i] ≤ N

Exemplu

arrows.inarrows.out
2
4
2 3 4 3
4
2 1 4 3
5
0

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?