Cod sursa(job #406159)

Utilizator alex@ndraAlexandra alex@ndra Data 1 martie 2010 11:46:31
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<vector>
using namespace std;

#define Nmax 50001
vector<int> G[Nmax];

int n, viz[Nmax],Nod[Nmax],nr=0;

void citire()
{
	int m, i, x, y;
	freopen("sortaret.in","r",stdin);
	  scanf("%d%d",&n,&m);
	  
	for(i=1;i<=m;i++)
	{
        scanf("%d%d",&x,&y);
		G[x].push_back(y);
	}
  fclose(stdin);
}

void df(int nod)
{
	int i, vecini;
	
  viz[nod]=1;
  vecini=G[nod].size();
  
  for(i=0;i<vecini;i++)
	if(!viz[G[nod][i]])
        df(G[nod][i]);
	
  Nod[++nr]=nod;
	
}

void afisare()
{
  int i;
  freopen("sortaret.out","w",stdout);
  for(i=n;i;i--)
	printf("%d ",Nod[i]);
  fclose(stdout);
}
int main()
{
	int i;
	citire();
	
	for(i=1;i<=n;i++)
		if(!viz[i])
			df(i);
	
    afisare();		
	return 0;

}