Cod sursa(job #377318)

Utilizator GotenAmza Catalin Goten Data 23 decembrie 2009 23:28:36
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>

int c[51000],m,n,i,v[101000][2],x,y,start[51000],grad[51000],p,u,t;

int main()
{
	ifstream f("sortaret.in");
	ofstream g("sortaret.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
	{
		f>>x>>y;
		v[i][0]=y;
		v[i][1]=start[x];
		start[x]=i;
		grad[y]++;
	}
	p=1;
	for(i=1;i<=n;i++)
		if(!grad[i])
		{
			c[++u]=i;
			t=start[i];
			while(t)
			{
				grad[v[t][0]]--;
				t=v[t][1];
			}
		}
	for(i=p;i<=u&&p<=n;i++)
	{ 
		t=start[c[i]];
		while(t)
		{
			if(!grad[v[t][0]])
				c[++u]=v[t][0];
			t=v[t][1];
		}
	}
	for(i=1;i<=n;i++)
		g<<c[i]<<' ';
	return 0;
}