Cod sursa(job #2629320)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 20 iunie 2020 06:33:09
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream in ("sortaret.in");
ofstream out ("sortaret.out");

int n, m;

vector < int > v[50007];

queue < int > q;

int sub[50007];

int x, y;

int main()
{
    in >> n >> m;
    for ( register int i = 1 ; i <= m ; ++i )
    {
        in >> x >> y;
        v[x].push_back (y);
        ++sub[y];
    }
    for ( register int i = 1 ; i <= n ; ++i )
        if ( sub[i] == 0 )
            q.push (i);
    while ( !q.empty () )
    {
        x = q.front ();
        q.pop ();
        out << x << " ";
        for ( y = 0 ; y < v[x].size () ; ++y )
        {
            --sub[v[x][y]];
            if ( sub[v[x][y]] == 0 )
                q.push ( v[x][y] );
        }
    }
    return 0;
}