Cod sursa(job #409684)

Utilizator petroMilut Petronela petro Data 3 martie 2010 19:58:58
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
FILE *f=fopen("sortaret.in","r");
FILE *g=fopen("sortaret.out","w");
#define M 100001
long n,m;
typedef struct 
{
	long x,y;
}VF;
VF v[M];
long grad[M/2];
bool viz[M/2];

void cit()
{
	long i;
	fscanf(f,"%ld%ld",&n,&m);
	for(i=1;i<=m;++i)
	{
		fscanf(f,"%ld%ld",&v[i].x,&v[i].y);
		grad[v[i].y]++;
	}
	fclose(f);
}

void scade(long x)
{
	long i;
	for(i=1;i<=m;++i)
		if(v[i].x==x) {grad[v[i].y]--; v[i].x=v[i].y=0;}
}
int main()
{
	cit();
	long i,j;
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=n;++j)
			if(grad[j]==0 && viz[j]==0) break;
		fprintf(g,"%ld ",j);
		viz[j]=1;
		scade(j);
	}
	
	fclose(f);
	return 0;
}