Cod sursa(job #324887)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 17 iunie 2009 20:02:29
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#include <stdlib.h>
#define N 50010
int n,m,*a[N],viz[N];
void df(int x,int t){
	viz[x]=1;
	printf("%d ",x);
	for(int i=1;i<=a[x][0];i++)
		if(a[x][i]!=t && viz[a[x][i]]==0) df(a[x][i],x);
}
int main(){
	int i,x,y;
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		a[i]=(int*)malloc(4);
		a[i][0]=0;
	}
	for(i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		a[x][0]++;a[y][0]++;
		a[x]=(int*)realloc(a[x],(a[x][0]+1)*4);
		a[y]=(int*)realloc(a[y],(a[y][0]+1)*4);
		a[x][a[x][0]]=y;a[y][a[y][0]]=x;
	}
	for(i=1;i<=n;i++)
		if(viz[i]==0)
			df(i,-1);
	return 0;
}