Cod sursa(job #1145610)

Utilizator SilverGSilver Gains SilverG Data 18 martie 2014 12:32:58
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
/*
    Keep It Simple!
*/

#include<stdio.h>
#include<list>

#define MaxN 50001

using namespace std;

int N,M;

list<int> G[MaxN],Topoligic_Nodes;
bool viz[MaxN],entlvl[MaxN];

void DFS(int node)
{
	viz[node] = 1;

	for(list<int>::iterator it = G[node].begin(); it!=G[node].end(); it++)
	   if(!viz[*it])
	     DFS(*it);

    Topoligic_Nodes.push_front(node);
}

int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);

	scanf("%d%d",&N,&M);

	int x,y;

	for(int i=1; i<=M; i++)
	  {
	  	scanf("%d%d",&x,&y);
	  	G[x].push_back(y);
	  }
    for(int i=1; i<=N; i++)
      if(!viz[i])
	   DFS(i);

	for(list<int>::iterator it = Topoligic_Nodes.begin(); it!=Topoligic_Nodes.end(); it++)
		printf("%d ",*it);
}