Diferente pentru problema/sortaret intre reviziile #15 si #47

Diferente intre titluri:

sortaret
Sortare Topologica

Diferente intre continut:

h2. Date de intrare
In fisierul de intrare sortaret.in vom avea pe prima linie doua numere intregi $N$ si $M$. Pe fiecare dintre urmatoarele $M$ linii se vor afla cate doua numere intregi, separate intre ele printr-un spatiu, $X$ si $Y$, cu semnificatia ca exista arc de la nodul $X$ catre nodul $Y$.
In fisierul de intrare $sortaret.in$ vom avea pe prima linie doua numere intregi $N$ si $M$. Pe fiecare dintre urmatoarele $M$ linii se vor afla cate doua numere intregi, separate intre ele printr-un spatiu, $X$ si $Y$, cu semnificatia ca exista arc de la nodul $X$ catre nodul $Y$.
h2. Date de iesire
Fisierul de iesire sortaret.out va contine pe o singura linie $N$ numere separate intre ele prin spatii, care reprezinta sortarea topologica a nodurilor grafului dat.
Fisierul de iesire $sortaret.out$ va contine pe o singura linie $N$ numere separate intre ele prin spatii, care reprezinta sortarea topologica a nodurilor grafului dat. Daca exista mai multe solutii se va afisa oricare.
h2. Restrictii
* {$1 ≤ N ≤ 5000$}
* {$1 ≤ N ≤ 7000$}
* {$1 ≤ N ≤ 50000$}
* {$1 ≤ M ≤ 100000$}
* Pot exista mai multe arce intre doua noduri $X$ si $Y$
h2. Exemplu
| 1 2 3 4 6 7 8 5 9
|
h3. Indicatii de rezolvare
h2. Indicatii de rezolvare
* O scurta prezentare a acestui subiect gasiti "aici":http://en.wikipedia.org/wiki/Topological_sorting
* Algoritmul de Sortare Topologica il gasiti foarte bine explicat si in cartea <i>Introducere in algoritmi</i>, Thomas Cormen, editura Agora, Cluj-Napoca.
 
* Ideea din spatele rezolvarii consta intr-o parcurgere in adancime pentru a calcula timpii de terminare pentru fiecare varf $v$. Pe masura ce fiecare varf este terminat, se insereaza varful in capul unei liste simplu inlantuite. Parcurgerea listei va constitui solutia.
Acest algoritm are o complexitate de ${O($N$+$M$)$} deoarece cautarea in adancime necesita un timp {$O($M$+$N$)$} iar inserarea fiecaruia din cele {$|N|$} varfuri in capul liste simplu inlantuite necesita timp {$O($1$)$}.
 
h3. Probleme Similare
* Algoritmul de Sortare Topologica il gasiti foarte bine explicat si in cartea _Introducere in algoritmi_, Thomas Cormen, editura Agora, Cluj-Napoca.
* O idee de rezolvare este sa introducem, pe rand, intr-o lista, nodurile care la un moment dat un gradul exterior zero. Odata ce un nod este introdus in lista, vom scoate nodul respectiv din graf si vom considera in continuare graful ramas. O implementare directa are complexitatea $O(N^2^)$ si se gaseste 'aici':job_detail/144431?action=view-source. Daca rafinam aceasta idee, introducand succesiv nodurile intr-o coada, putem obtine complexitatea $O(N+M)$, sursa se gaseste 'aici':job_detail/144253?action=view-source.
* O alta posibila idee de rezolvare consta intr-o parcurgere in adancime pentru a calcula timpii de terminare pentru fiecare varf $v$. Pe masura ce fiecare varf este terminat, este inserat in capul unei liste simplu inlantuite. Parcurgerea listei va constitui solutia. Acest algoritm are o complexitate de $O(N+M)$ deoarece cautarea in adancime necesita un timp $O(N+M)$ iar inserarea fiecaruia din cele {$|N|$} varfuri in capul liste simplu inlantuite necesita timp $O(1)$. Sursa se gaseste 'aici':job_detail/144206?action=view-source.
 
h2. Probleme similare
 
* "Topological Sort":http://www.algorithmist.com/index.php/UVa_10305
* "Spreadsheet":http://www.algorithmist.com/index.php/UVa_196
* "Weighings":http://acm.sgu.ru/problem.php?contest=0&problem=230
* 'Alpin':problema/alpin
* "Just Matrix":http://acm.sgu.ru/problem.php?contest=0&problem=354
== include(page="template/taskfooter" task_id="sortaret") ==
 

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
2774