Cod sursa(job #1011388)

Utilizator MarghescuGabriel Marghescu Marghescu Data 16 octombrie 2013 20:01:30
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
#define nmax 50003
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int d[nmax],n,m,viz[nmax];

struct nod{
	int x;
	nod *urm;
};
nod *lista[nmax];

void adaugare(int a,int b)
{
    nod *p;
    p=new nod;
    p->x=b;
    p->urm=lista[a];
    lista[a]=p;
}

void citire()
{
    int a,b;

    f>>n>>m;
    for(int i=1;i<=n;i++)
        d[i]=0,viz[i]=0;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b;
        d[b]++;
        adaugare(b,a);
    }
}
void df(int vf)
{
    nod *p;
    viz[vf]=1;
    for(p=lista[vf];p!=0;p=p->urm)
    {
        if(viz[p->x]==0)
            df(p->x);
    }
    g<<vf<<" ";
}

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

}

int main()
{
    citire();
    algoritm();

    f.close();
    g.close();
    return 0;

}