Cod sursa(job #1604178)

Utilizator ClaudiuHHiticas Claudiu ClaudiuH Data 18 februarie 2016 00:31:28
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
using namespace std;

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

const int n_max = 50005;

vector <int> v[n_max];
vector <int> l;

int n,m;
bool use[n_max];

void dfs(int nod)
{
    use[nod] = 1;
    for(vector <int> ::iterator it = v[nod].begin() ; it != v[nod].end() ; ++ it)
        if(!use[*it])
        {
            use[*it] = 1;
            dfs(*it);
        }
    l.push_back(nod);
}

int main()
{
    cin>>n>>m;
    for(int i=1; i<=m; ++i)
    {
        int x,y;
        cin>>x>>y;
        v[x].push_back(y);
    }
    for(int i=1;i<=n;++i)
        if(!use[i])
            dfs(i);

    for(vector <int> ::reverse_iterator it = l.rbegin() ; it != l.rend() ; ++ it)
        cout<< *it<<' ';
    cin.close();
    cout.close();
    return 0;
}