Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-02-26 21:52:47.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:sortaret.in, sortaret.outSursăad-hoc
AutorArhiva EducationalaAdăugată deTabaraTabara Mihai Tabara
Timp execuţie pe test0.125 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Sortare topologica

O sortare topologica a varfurilor unui graf orientat aciclic este o operatie de ordonare liniara a varfurilor, astfel incat, daca exista un arc ( i, j ), atunci i apare inaintea lui j in aceasta ordonare.

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.

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.

Restrictii

  • 1 ≤ N ≤ 5000
  • 1 ≤ N ≤ 7000

Exemplu

sortaret.insortaret.out
9 8
1 2
1 3
3 4
3 5
5 9
4 6
4 7
4 8
1 2 3 4 6 7 8 5 9

Indicatii de rezolvare

  • O scurta prezentare a acestui subiect gasiti aici
  • 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($NM)$} deoarece cautarea in adancime necesita un timp {O($MN)$} iar inserarea fiecaruia din cele |N| varfuri in capul liste simplu inlantuite necesita timp {O($1)$}.

Probleme Similare

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?