Cod sursa(job #796955)

Utilizator RaduDoStochitoiu Radu RaduDo Data 13 octombrie 2012 01:09:56
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#define pb push_back
#define MAXN 50010
using namespace std;
vector <int>  G[MAXN],St;
vector <int> :: iterator it;
int n,m,x,y,i;
bool sel[MAXN];

void DF(int x)
{
	vector <int> :: iterator it;
	sel[x]=true;
	for(it=G[x].begin();it!=G[x].end();it++)
		if (!sel[*it]) DF(*it);
	St.pb(x);
}

int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d %d", &n, &m);
	for (i=1;i<=m;++i)
	{
		scanf("%d %d",&x, &y);
		G[x].pb(y);
	}
	memset(sel, false, sizeof(sel));
	for (i=1;i<=n; i++)
		if (!sel[i]) DF(i);
	reverse(St.begin(),St.end());
	for(it=St.begin(); it!=St.end(); it++)
		printf("%d ",*it);
	printf("\n");
	return 0;
}