Cod sursa(job #1378165)

Utilizator sherban26FMI Mateescu Serban-Corneliu sherban26 Data 6 martie 2015 10:49:24
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <list>

#define NMAX 50010

using namespace std;

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

int n, m;
int viz[NMAX];
list<int> list_ad[NMAX];
list<int> rez;

void dfs(int nod)
{
    for (list<int>::iterator it = list_ad[nod].begin();
            it != list_ad[nod].end();
            ++it)
    {
        if (viz[*it] == 0)
        {
            viz[*it] = 1;
            dfs(*it);
        }
    }

    rez.push_back(nod);
}

void afisare()
{
    list<int>::iterator it;

    for (it = rez.end(), it--; it != rez.begin(); --it)
    {
        fout << *it << " ";
    }
    fout << *it;
}

int main()
{
    fin >> n >> m;

    int x, y;
    for (int i = 0; i < m; ++i)
    {
        fin >> x >> y;

        list_ad[x].push_back(y);
    }

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

    afisare();

    return 0;
}