Cod sursa(job #626291)

Utilizator igsifvevc avb igsi Data 26 octombrie 2011 19:16:36
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
using namespace std;
#define maxN 50001
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct lista{int vf; lista *urm;} *graf[maxN], *coada;
int n, m, vizit[maxN];

void parcurgere(int varf);
void citire();

int main()
{
    citire();

    for(int i = 1; i<=n; i++)
        if(vizit[i]==0)
            parcurgere(i);

    for(lista *t=coada; t!=NULL; t=t->urm)
        fout << t->vf << ' ';
    fout << '\n';

    fin.close();
    fout.close();
    return 0;
}

void parcurgere(int varf)
{
    vizit[varf]=1;
    for(lista *t = graf[varf]; t != NULL; t=t->urm)
        if(vizit[t->vf]==0)
            parcurgere(t->vf);
    lista *t=new lista;
    t->vf = varf;
    t->urm = coada;
    coada = t;
}

void citire()
{
    fin >> n >> m;
    lista *t;
    int a, b;
    for(int i = 1; i <= m; i++)
    {
        fin >> a >> b;
        t = new lista;
        t->vf = b;
        t->urm = graf[a];
        graf[a] = t;
    }
}