Cod sursa(job #3198920)

Utilizator sebicretuCretu Sebastian sebicretu Data 31 ianuarie 2024 00:42:58
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,viz[50001];

struct nod
{
    int vf;
    nod *urm;
}*v[50001],*adresa;

void ad(nod *&prim,int x)
{
    nod *nou=new nod;
    nou->vf=x;
    nou->urm=prim;
    prim=nou;
}

void citire()
{
    fin>>n>>m;
    for(int i=1;i<=m;++i)
    {
        int x,y;
        fin>>x>>y;
        ad(v[x],y);
    }
}

void DFS(int x)
{
    viz[x]=1;
    for(nod *p=v[x];p;p=p->urm)
        if(viz[p->vf]==0) DFS(p->vf);
    ad(adresa,x);
}

void afis()
{
    for(nod *p=adresa;p;p=p->urm) fout<<p->vf<<" ";
}

int main()
{
    citire();
    for(int i=1;i<=n;++i)
        if(!viz[i]) DFS(i);
    afis();
    return 0;
}