Cod sursa(job #582683)

Utilizator stef93Stefan Gilca stef93 Data 15 aprilie 2011 18:14:37
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
#include <vector>
using namespace std;

vector <int> g[50003];
int n,m,nr;
bool u[50003];
int s[50003];

void tops(int nod)
{
	u[nod]=1;
	for(int i=0;i<g[nod].size();i++)
		if(!u[g[nod][i]])
		{
			tops(g[nod][i]);
		}
		s[nr++]=nod;
}

int main()
{
	int i,x,y;
	freopen("sortaret.in","r",stdin);
	scanf("%d %d",&n,&m);
	for(i=0;i<m;++i)
	{
		scanf("%d %d",&x,&y);
		g[x].push_back(y);
	}
	fclose(stdin);
	for(i=1;i<=n;++i)
	if(!u[i])
		tops(i);
	freopen("sortaret.out","w",stdout);
	for(i=nr-1;i>=0;--i)
		printf("%d ",s[i]);
	printf("\n");
	fclose(stdout);
	return 0;
}