Cod sursa(job #2092003)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 20 decembrie 2017 19:46:23
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<stdio.h>
#define MAXV 50000
#define MAXE 100000
void dfs(int nod);
FILE*fin,*fout;
int lista[MAXV+1],next[MAXE+1],val[MAXE+1];
int sol[MAXV+1],ult=0;
bool viz[MAXV+1];
int main()
{
    fin=fopen("sortaret.in","r");
    fout=fopen("sortaret.out","w");
    int V,E;
    fscanf(fin,"%d%d",&V,&E);
    for(int i=1;i<=E;i++)
    {
        int u,v;
        fscanf(fin,"%d%d",&u,&v);
        val[i]=v;
        next[i]=lista[u];
        lista[u]=i;
    }
    for(int i=1;i<=V;i++)
    {
        if(!viz[i])
        {
            dfs(i);
        }
    }
    for(int i=ult;i>=1;i--)
    {
        fprintf(fout,"%d ",sol[i]);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}
void dfs(int nod)
{
    int p=lista[nod];
    while(p!=0)
    {
        int vec=val[p];
        if(!viz[vec])
        {
            viz[vec]=1;
            dfs(vec);
        }
        p=next[p];
    }
    sol[++ult]=nod;
}