Cod sursa(job #2145220)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 27 februarie 2018 10:42:27
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
using namespace std;

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

int n,m,viz[50005],v[50005],k,i;

struct nod {
    int inf;
    nod* urm;
} *L[50005];

void adaug(nod*& l, int x) {
    nod* c=new nod;
    c->urm=l; c->inf=x;
    l=c;
}

void citire() {
    int i,x,y;

    fscanf(f,"%d%d",&n,&m);
    for(i=1;i<=m;i++) {
        fscanf(f,"%d%d",&x,&y);
        adaug(L[x],y);
    }
}

void df(int x) {
    nod* c;
    viz[x]=1;
    for(c=L[x];c;c=c->urm)
        if(!viz[c->inf]) df(c->inf);
    v[++k]=x;
}

void afis() {
    int i;

    for(i=n;i>=1;i--) fprintf(g,"%d ",v[i]);
}

int main() {

    citire();
    for(i=1;i<=n;i++)
        if(!viz[i]) df(i);
    afis();

    fclose(f); fclose(g);

    return 0;
}