Cod sursa(job #718129)

Utilizator dariusdariusMarian Darius dariusdarius Data 20 martie 2012 16:05:15
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>
#include <vector>
#define N 100005
using namespace std;
vector<int> a[N];
int need[N];
vector<int>::iterator iter;
void dfs(int x)
{
	need[x]--;
	printf("%d ",x);
	for(iter=a[x].begin();iter!=a[x].end();iter++)
	{
		need[*iter]--;
		if(!need[*iter])
			dfs(*iter);
	}
}
int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.in","w",stdout);
	int i,n,m,x,y;
	scanf("%d%d",&n,&m);
	while(m--)
	{
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
		need[y]++;
	}
	for(i=1;i<=n;i++)
		if(!need[i])
			dfs(i);
	return 0;
}