Cod sursa(job #615407)

Utilizator moonbeamElma Moonbeam moonbeam Data 9 octombrie 2011 17:28:19
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<cstdio>
#include<vector>
#include<bitset>
using namespace std;
#define pb push_back
#define NM 50001
bitset<NM> viz;
vector <int > a[NM];
int rez[NM],N,M,x,y;
void df(int nod)
{
	viz[nod]=1;
	vector<int> :: iterator it=a[nod].begin(),end=a[nod].end();
	for (;it!=end; ++it)
	{
		if (viz[*it])
			continue;
		df(*it);
	}
	rez[++rez[0]]=nod;
}
int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d%d",&N,&M);
	while (M--)
	{
		scanf("%d%d",&x,&y);
		a[x].pb(y);
	}
	for(int i=1; i<=N; ++i)
		if (!viz[i])
			df(i);
	for (int i=rez[0]; i; --i)
		printf("%d ",rez[i]);
	return 0;
}