Pagini recente » Cod sursa (job #280317) | Cod sursa (job #1195670) | Cod sursa (job #1100903) | Cod sursa (job #2576362) | Cod sursa (job #365415)
Cod sursa(job #365415)
#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;
}