Cod sursa(job #212766)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 6 octombrie 2008 19:46:54
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#define N 60275

int ok[N],n,m;

typedef struct nod{
        int 
		vf;
        nod *next;
} *Nod, NOD;

Nod L[N];
Nod poz;

void adaug(int i,int j){
	Nod p=new NOD;
	p->next=L[i];
    p->vf=j;
    L[i]=p;
}

void elimin(int nod){
	Nod p=new NOD;
	p->next=poz;
	p->vf=nod;
	poz=p;
}

void funct(int nod){
	ok[nod]=1;
	for(Nod p=L[nod];p;p=p->next)
		if(!ok[p->vf])
			funct(p->vf);
	ok[nod]=2;
	elimin(nod);
}

int main(){
    int x,y,i;
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(;m>0;m--){
		scanf("%d%d",&x,&y);
		adaug(x,y);
	}
	for(i=1;i<=n;++i)
		if(!ok[i]) 
			funct(i);
	for(Nod p=poz;p;p=p->next)
		printf("%d\n",p->vf);
	fclose(stdin);
	fclose(stdout);
	return 0;
}