Cod sursa(job #365415)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 18 noiembrie 2009 17:21:03
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include<iostream>
using namespace std;

class nod
{
public:
	int nr;
	int exterior;
	nod *dreapta;
	nod *urm;
	nod *ultim;
	nod(void):nr(0),exterior(0),dreapta(NULL),urm(NULL),ultim(NULL){};
	
		
};
nod noduri[50001]; int solutie[50001],n,m;


void elimina(int aux)
{








}



int main(void)
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	
nod *start=new nod;
start->dreapta=&noduri[1];

cin>>n>>m;
int n2=n;

int i,x,y;
for(i=1; i<=m; i++)
{
	cin>>x>>y;
	if(noduri[x].exterior==0)
	{ 
		nod *p=new nod;
		p->urm=NULL;
		p->nr=y;
		noduri[x].urm=p;
		noduri[x].ultim=p;
		noduri[x].exterior++;
		
	}
	
    else
	{
	nod *r=new nod;
    r->urm=NULL;
	r->nr=y;
	noduri[x].ultim->urm=r;
	noduri[x].ultim=r;
	noduri[x].exterior++;
	}		
	
}
	
//am incheiat de facut tabloul nodurilor	
	
for(i=1; i<n; i++){noduri[i].dreapta=&noduri[i+1]; noduri[i].nr=i;}
noduri[n].nr=n; noduri[n].dreapta=NULL;

nod *p;
int aux;

while(n)
{
	p=start;
	
	while(p->dreapta->dreapta)
	{
		if(p->dreapta->dreapta->exterior==0)
		{
			aux=p->dreapta->dreapta->nr;
			solutie[n]=aux;
			n--;
			p->dreapta->dreapta=p->dreapta->dreapta->dreapta;
			elimina(aux);
			
		}
		
		p=p->dreapta;
	}		
n--;	
}
	

	
	
	
	
	
	for(i=1; i<=n2; i++)cout<<solutie[i];
	
	return 0;
}