Cod sursa(job #2200785)

Utilizator daniel.vbVasile Daniel daniel.vb Data 2 mai 2018 16:29:15
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>



struct lista
{
    int i;
    lista *urm;
};

lista* v[50001],*crt;
int k,s[50001],vizitat[50001];

void sortare(int i)
{
    lista *crt=v[i];

    while(crt!=NULL)
    {
        sortare(crt->i);
        crt=crt->urm;
    }
    s[k]=i;
    k--;
    vizitat[i]=1;
}





int main()
{
    int i,j,n,m,x,y;
    FILE *f,*g;

    f=fopen("sortaret.in","r");
    g=fopen("sortaret.out","w");

    fscanf(f,"%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        crt=new(lista);
        crt->i=y; crt->urm=v[x];v[x]=crt;
    }
    k=n;
    for(i=1;i<=n;i++)
        if(vizitat[i]==0)
             sortare(i);
    for(i=1;i<=n;i++)
    {
        fprintf(g,"%d ",s[i]);
    }


    fclose(f);
    fclose(g);
}