Pagini recente » Cod sursa (job #277860) | Cod sursa (job #2654448) | Cod sursa (job #384781) | Cod sursa (job #194054) | Cod sursa (job #315375)
Cod sursa(job #315375)
#include <stdio.h>
#define Nmax 100100
#define Mmax 500100
struct nod{
int info,viz;
nod *next;
};
nod *p[Nmax];
int cnt,n,m,sol[Mmax];
void sterge(int x,int y)
{
nod *current=p[x];
while(current)
{
if(current->info==y && current->viz==0)
{
current->viz=1;
current=NULL;
}
else
current=current->next;
}
current=p[y];
while(current)
{
if(current->info==x && current->viz==0)
{
current->viz=1;
current=NULL;
}
else
current=current->next;
}
}
/*void sterge(int x,int y)
{
nod *current=p[x];
if(current->info==y)
{
delete current;
p[x]=current->next;
current=NULL;
}
while(current)
{
if(current->next->info==y)
{
current->next=current->next->next;
delete current->next;
current=NULL;
}
current=current->next;
}
current=p[y];
if(current->info==x)
{
delete current;
p[y]=current->next;
current=NULL;
}
while(current)
{
if(current->next->info==y)
{
current->next=current->next->next;
delete current->next;
current=NULL;
}
current=current->next;
}
}*/
void euler(int u)
{
nod *current=p[u];
while(current)
{
if(current->viz==0)
{
sterge(current->info,u);
euler(current->info);
}
current=current->next;
}
sol[++cnt]=u;
}
void add(int x,int y)
{
nod *current=new nod;
current->info=y;
current->next=p[x];
current->viz=0;
p[x]=current;
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
int i,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
// sol[++cnt]=1;
euler(1);
for(i=1;i<cnt;++i)
printf("%d ",sol[i]);
return 0;
}