Pagini recente » Cod sursa (job #2050724) | Cod sursa (job #172978) | Cod sursa (job #1008486) | Cod sursa (job #1401792) | Cod sursa (job #270757)
Cod sursa(job #270757)
#include<stdio.h>
#define nmax 100001
struct nod
{
int drum;
nod *urm;
} *l[nmax];
int n,m,c[nmax],ct;
void add(nod *&inc,int info)
{
nod *p=new nod;
p->drum=info;
p->urm=inc;
inc=p;
}
void sterg (nod *&inc,int info)
{
nod *t=inc;
if (t->drum!=info)
{
for(;t->urm && t->urm->drum!=info;t=t->urm) ;
//nod *q=t->urm;
t->urm=t->urm->urm;
//delete q;
}
else
{
//nod *q=inc;
inc=inc->urm;
//delete q;
}
}
void euler(int k)
{
int x;
while (l[k])
{
x=l[k]->drum;
l[k]=l[k]->urm;
sterg(l[x],k);
euler(x);
}
c[++ct]=k;
}
int main()
{
int a,b;
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i)
{
scanf("%d%d",&a,&b);
add(l[a],b);
add(l[b],a);
}
euler(1);
for(int i=1;i<ct;++i)
printf("%d ",c[i]);
printf("\n");
return 0;
}