Cod sursa(job #308464)
#include<stdio.h>
#define NMAX 1001
int i,j,n,m,k,l,a,s,b,x[NMAX][NMAX],y[NMAX],z[NMAX];
void euler(int nod)
{
for (int i=1;i<=n;i++)
if (x[nod][i]>0)
{
x[nod][i]--;
x[i][nod]--;
euler(i);
}
y[++y[0]]=nod;
}
int main()
{
freopen("ceuler.in","r",stdin);
freopen("ceuler.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
x[a][b]++;
x[b][a]++;
z[a]++;
z[b]++;
}
for (i=1;i<=n;i++)
if (z[a]%2==1)
{
printf("-1\n");
return 0;
}
euler(1);
for (i=y[0];i>=2;i--)
printf("%d ",y[i]);
return 0;
}