== include(page="template/taskheader" task_id="ctc") ==
Poveste şi cerinţă...
Se dă un graf orientat $G = (V, E)$. O componentă tare conexă a grafului orientat $G$ este o mulţime maximală de vârfuri $U$ inclusă în $V$, astfel încât, pentru fiecare pereche de vârfuri $u$ şi $v$ din $U$ avem atât drum de la $u$ la $v$ cât şi drum de la $v$ la $u$. Cu alte cuvinte, vâfurile $u$ şi $v$ sunt accesibile unul din celălalt.
h2. Cerinţă
Dându-se un graf orientat $G = (V, E)$ se cere să se determine componentele sale tare conexe.
h2. Date de intrare
Fişierul de intrare $ctc.in$ ...
Fişierul de intrare $ctc.in$ conţine pe prima linie două numere naturale $N$, $M$ ce reprezintă numărul de noduri din $G$ şi numărul muchiilor. Pe următoarele $M$ linii se vor afla câte două numere naturale $x$ şi $y$, separate prin spaţiu, reprezentând muchia orientată $(x, y)$.
h2. Date de ieşire
În fişierul de ieşire $ctc.out$ ...
În fişierul de ieşire $ctc.out$ veţi afişa pe prima linie un singur număr reprezentând numărul componentelor tare conexe. Pe fiecare din următoarele linii se va scrie câte o componentă tare conexă prin enumerarea nodurilor componente. Ordinea lor poate fi oricum.
h2. Restricţii
* $... ≤ ... ≤ ...$
* $1 ≤ N ≤ 100 000$
* $1 ≤ M ≤ 200 000$
h2. Exemplu
table(example). |_. ctc.in |_. ctc.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| 8 12
1 2
2 6
6 7
7 6
3 1
3 4
2 3
4 5
5 4
6 5
5 8
8 7
| 2
1 2 3
4 5 6 7 8
|
h3. Explicaţie
...
!problema/ctc?Ctc.png!
În graful orientat din exemplu componentele tare conexe sunt reprezentate cu nuanţe diferite de gri. Aici, $1$ $2$ $3$ reprezintă prima componentă tare conexă, iar $4$ $5$ $6$ $7$ $8$ cea de a doua.
== include(page="template/taskfooter" task_id="ctc") ==