Cod sursa(job #210014)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 25 septembrie 2008 23:15:16
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

FILE *fin=fopen("sortaret.in","r"),
    *fout=fopen("sortaret.out","w");

int N, M;
struct nod{int vec;nod* next;};
typedef nod* lista;
lista L[50003];
char uz[50003];

void dfs(int p){
    fprintf(fout,"%d ",p);
    while(L[p]){
        dfs(L[p]->vec);
        L[p]=L[p]->next;
    }
}
int main(){
    fscanf(fin,"%d %d",&N,&M);
    for(int i=1;i<=N;i++){
        L[i]==new nod;
        L[i]=NULL;
    }

    for(int i=1;i<=M;i++){
        int x,y;
        fscanf(fin,"%d %d",&x,&y);
        lista aux;
        aux=new nod;
        aux->vec=y;
        aux->next=L[x];
        L[x]=aux;
        uz[y]=1;
    }

    int rad=0;
    for(int i=1;i<=N && rad==0;i++)
        if(uz[i]==0)
            rad=i;

    dfs(rad);
    fclose(fin);
    fclose(fout);
    return 0;

}