Cod sursa(job #928038)

Utilizator StanAndreiAndrei Stan StanAndrei Data 26 martie 2013 10:53:08
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <list>

using namespace std;

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

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

int N,M;

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;
    ST.push_back(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);

    list<int>:: iterator it;
    for (it=ST.begin();it!=ST.end();++it)
        f2<<*it<<" ";
    f2<<'\n';
}

int main()
{

    cit();
    rez();

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