== include(page="template/taskheader" task_id="retele") ==
Intr-un oras exista $N$ abonati si mai multe retele de telefonie. Doi abonati apartin aceleiasi retele de telefonie, daca primul abonat il poate contacta pe al doilea (direct sau prin intermediul altor abonati) si reciproc.
h2. Cerinta
Determinati toate retele de telefonie din oras, prin specificarea abonatilor fiecarei retele.
Poveste si cerinta...
h2. Date de intrare
Pe prima linie a fisierului $retele.in$, se afla numarele $N$ si $M$, reprezentand numarul de abonati si numarul de contacte din oras. Pe urmatoarele $M$ linii, se afla cate doua numere $x$ si $y$, cu semnificatia ca abonatul $x$ il poate contacta direct pe abonatul $y$.
...
h2. Date de iesire
Fisierul de iesire $retele.out$ contine pe prima linie numarul $T$ de retele de telefonie. Pe urmatoarele $T$ linii vor fi afisate retelele de telefonie, cate una pe o linie, in formatul urmator: $R$ $A$<sub>1</sub> $A$<sub>2</sub> ... $A$<sub>R</sub>, unde R este numarul de abonati, iar $A$<sub>1</sub> $A$<sub>2</sub> ... $A$<sub>R</sub> reprezinta abonatii care fac parte din reteaua respectiva. Retelele vor fi afisate in ordinea crescatoare a abonatului de numar minim, iar abonatii din aceeasi retea vor fi, de asemenea, afisati in ordine crescatoare.
...
h2. Restrictii
* $1 ≤ N ≤ 50000$
* $1 ≤ M ≤ 300000$
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. retele.in |_. retele.out |
| 10 14
2 3
3 2
3 1
1 9
9 7
7 1
4 3
4 10
6 10
5 4
5 6
10 5
5 8
5 7
| 4
3 1 7 9
2 2 3
4 4 5 6 10
1 8
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
== include(page="template/taskfooter" task_id="retele") ==
h3. Explicatie
==SmfTopic(topic_id="...")==
...
== include(page="template/taskfooter" task_id="retele") ==