Cod sursa(job #669324)

Utilizator Robert29FMI Tilica Robert Robert29 Data 26 ianuarie 2012 19:21:54
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<vector>
using namespace std;
FILE*f=fopen("sortaret.in","r");
FILE*g=fopen("sortaret.out","w");
int x,y,n,m,q[50001],gr[50001];
vector <int> v[50001];
int main()
{
	fscanf(f,"%d%d",&n,&m);
	for(int i=1;i<=m;++i)
	{
		fscanf(f,"%d%d",&x,&y);
		v[x].push_back (y);
		++gr[y];
	}
	
	for(int i=1;i<=n;++i)
		if(!gr[i])
			q[++q[0]]=i;
	
	for(int i=1;i<=n;++i)
	{
		int x=q[i];
		for(int j=0;j<v[x].size();++j)
			if(!(--gr[v[x][j]]))
				q[++q[0]]=v[x][j];
		
	}
	
	for(int i=1;i<=n;++i)
		fprintf(g,"%d ",q[i]);
	
	fclose(g);
	fclose(f);
	return 0;
}