Pagini recente » Cod sursa (job #658713) | Cod sursa (job #1239001) | Cod sursa (job #1017333) | Cod sursa (job #348428) | Cod sursa (job #1559313)
#include <iostream>
#include <cstdio>
using namespace std;
int m,n,k;
struct nod
{
int inf;
nod*a;
}*p[100010];
int nr_nod[100010];
void adn(int x,int y)
{
nod*c=new nod;
c->inf=y;
c->a=p[x];
p[x]=c;
}
void ster(int y,int x)
{
if(p[x]->inf==y)
p[x]=p[x]->a;
else
{
nod*aux;
aux=p[x];
for(nod*c=p[x]->a; c!=NULL; c=c->a,aux=aux->a)
if(c->inf==y)
{
c->a=aux;
break;
}
}
}
void par(int x)
{
nr_nod[++k]=x;
if(p[x]!=NULL)
{
int aux=p[x]->inf;
p[x]=p[x]->a;
ster(x,aux);
par(aux);
}
}
int ver()
{
for(int i=1; i<=n; i++)
if(nr_nod[i]%2==1)
return 0;
return 1;
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
int x,y;
for(int i=1; i<=m; i++)
{
scanf("%d %d",&x,&y);
//cout<<x<<y<<endl;
adn(x,y);
nr_nod[x]++;
if(x!=y)
{
nr_nod[y]++;
adn(y,x);
}
}
if(ver())
printf("-1");
else
{
for(int i=1; i<=n; i++)
nr_nod[i]=0;
par(1);
for(int i=1; i<k; i++)
printf("%d ",nr_nod[i]);
}
return 0;
}