Cod sursa(job #364879)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 17 noiembrie 2009 11:55:08
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include<iostream>

using namespace std;

//definim clasa nod
class nod
{
public:

	int nr; 
	int noduri;
    nod *urmator; 
	nod *ultim;	
	nod(void):nr(0),noduri(0),urmator(NULL),ultim(NULL){};
};



//definim lista


nod v[50001];
int folosit[50001];
int coada[50001];
int poz=1;


void introducere(int p)
{
	if(folosit[p]==0)
	{
		folosit[p]=1;
		coada[poz]=p; poz++;
		
		int aux;
		nod *s=v[p].urmator;
		for(aux=1; aux<=v[p].noduri; aux++)
		{
			if(folosit[s->nr]==0)introducere(s->nr);
			s=s->urmator;
			
		}
		
		
		
		
	}

}


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

	int n,m,i,x,y;
	
	cin>>n>>m;
	
	
	
	//creem vectorul cu listele de noduri
	for(i=1; i<=m; i++)
	{
		cin>>x>>y;
		
		if(v[x].noduri==0)
		{   
			nod *var=new nod;
            var->nr=y;
            var->urmator=NULL;
			v[x].noduri=1;
			v[x].urmator=var;
			v[x].ultim=v[x].urmator;
		}
		
		
		
		else 
		{ 
			nod *var=new nod; 
		    
            var->nr=y;
            var->urmator=NULL;
			v[x].ultim->urmator=var;
			v[x].ultim=var;
            v[x].noduri++;
		    
		}
	}
	

	
	introducere(1);
	
	for(i=1; i<poz; i++)cout<<coada[i]<<" ";
	
	return 0;
}