Cod sursa(job #928073)

Utilizator StanAndreiAndrei Stan StanAndrei Data 26 martie 2013 11:13:06
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <list>

using namespace std;

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

list<int> G[100005];
bool viz[100005];

int N,M,V[100005],C=0;

void cit()
{
    f1>>N>>M;

    int a,b,i;
    for (i=1;i<=M;i++)
    {
        f1>>a>>b;
        G[a].push_back(b);
    }
}

void dfs(int p)
{
    viz[p]=1;
    V[++C]=p;

    list<int>:: iterator it;

    for (it=G[p].begin();it!=G[p].end();++it)
        if (!viz[*it])
            dfs(*it);
}

void rez()
{
    int i;
    for (i=1;i<=N;i++)
        if (!viz[i])
            dfs(i);

    for (i=C;i>=1;i--)
        f2<<V[i]<<" ";
    f2<<'\n';
}

int main()
{
    cit();
    rez();

    f1.close();
    f2.close();
    return 0;
}