Cod sursa(job #792277)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 26 septembrie 2012 20:36:30
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#include <vector>
using namespace std;

int n,m;
vector<int> list[50004];
bool viz[100005];
vector<int> ord;

void df(int nod)
{
	viz[nod]=1;
	for(unsigned int i=0;i<list[nod].size();i++)
		if(viz[list[nod][i]]==0)
			df(list[nod][i]);
	ord.push_back(nod);
	
	return;
}

void sortaret()
{
	for(int i=1;i<=n;i++)
		if(viz[i]==0)
			df(i);
	return;
}

int main()
{
	freopen("sortaret.in","r", stdin);
	freopen("sortaret.out","w", stdout);
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d %d",&x,&y);
		list[x].push_back(y);
	}
	sortaret();
	for(int i=ord.size()-1;i>=0;i--)
		printf("%d ",ord[i]);
	
	return 0;
}