La cursul de comunicare organizat în vacanță, au participat persoane, numerotate cu numere de ordine de la la . Fiecare persoană are la curs mai mulți prieteni apropiați, cărora le comunică orice informație imediat cum a aflat-o. Relaţiile de comunicare nu sunt bidirecţionale, cu alte cuvinte dacă persoana îi transmite imediat informații persoanei , nu este obligatoriu ca şi persoana să transmită imediat informaţiile pe care le primeşte persoanei .
Profesorul studiază relaţiile dintre participanţii la curs. El defineşte un nucleu de comunicare ca fiind un grup cu număr maxim de cursanţi cu proprietatea că oricare ar fi şi doi cursanţi din grup, dacă primeşte o informaţie, aceasta va ajunge şi la cursantul (direct sau prin intermediul altor cursanţi din grup).
Profesorul dorește să determine numărul de nuclee de comunicare existente la cursul său.
Cerinţă
Cunoscând , numărul de cursanţi, precum și prietenii fiecărui cursant, scrieţi un program care să determine numărul de nuclee de comunicare existente.
Date de intrare
Fișierul de intrare nuclee.in
conține pe prima linie un număr natural , reprezentând numărul de cursanţi. Următoarele linii conțin informații despre prietenii cursanţilor. Astfel, pe linia din fişier se află numerele naturale , separate prin câte un spaţiu, unde reprezintă numărul de prieteni ai persoanei , iar , , , reprezintă prietenii persoanei .
Date de ieşire
Fişierul de ieşire nuclee.out
va conţine o singură linie pe care va fi scris un singur număr natural reprezentând numărul de nuclee de comunicare existente.
Restricţii şi precizări
- Pot exista persoane care nu au prieteni apropiați.
- O persoană poate face parte dintr-un singur nucleu.
- Un nucleu poate fi format dintr-o singură persoană.
Exemplu
nuclee.in
5
2 3 4
2 1 3
1 2
0
2 1 4
nuclee.out
3
Explicație
Persoana are prieteni apropiaţi ( şi )
Persoana are de asemenea prieteni apropiaţi ( şi )
Persoana are un prieten (pe )
Persoana nu are prieteni.
Persoana are doi prieteni (pe şi pe ).
Există nuclee de comunicare.
- : , ,
- :
- :