Cod sursa(job #1779926)

Utilizator blackoddAxinie Razvan blackodd Data 15 octombrie 2016 18:18:41
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <vector>
using namespace std;

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

#define MaxN 50002
#define pb push_back

vector<int> G[MaxN], ans;
int viz[MaxN];
int n, m, x, y;

void Df(int);

int main() {

    fin >> n >> m;

    while(fin >> x >> y) {
        G[x].pb(y);
    }

    for ( int i = 1; i <= n; ++i )
        if ( viz[i] == 0 )
            Df(i);

    for ( vector<int>::reverse_iterator rit = ans.rbegin(); rit != ans.rend(); ++rit )
        fout << *rit << ' ';

    fin.close();
    fout.close();
    return 0;
}

void Df(int i) {
    viz[i] = 1;

    for ( auto v : G[i] )
        if ( !viz[v] )
            Df(v);

    ans.pb(i);
}