Cod sursa(job #657797)

Utilizator sternvladStern Vlad sternvlad Data 7 ianuarie 2012 14:02:02
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int N=50001;

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

vector <int> g[N];
queue <int> q;
int viz[N],n,m;

void dfs (int nod)
{
    int i;
    viz[nod]=1;
    for (i=0;i<g[nod].size();i++)
        if (!viz[g[nod][i]])
            dfs (g[nod][i]);
            q.push(nod);
}

void afisare ()
{
    int nod;
    if (!q.empty ());
        {
            nod=q.front ();
            q.pop();
            afisare ();
            out<<nod<<" ";
        }
}

int main()
{
    int i;
    int x,y;
    in>>n>>m;
    for (i=1;i<=m;i++)
        {
            in>>x>>y;
            g[x].push_back (y);
        }
    for (i=1;i<=n;i++)
        if (!viz[i])
            dfs (i);
    afisare();
            return 0;
}