Pagini recente » Cod sursa (job #2745112) | Cod sursa (job #1354783) | Cod sursa (job #3195512) | Cod sursa (job #298265) | Cod sursa (job #442143)
Cod sursa(job #442143)
#include <stdio.h>
#include <iostream.h>
int n,m,i,j,a[30][30],x,y,viz[30],p=0,v[30];
void citire()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
int i, x, y;
for (i = 1; i <= m; i++)
{
scanf("%d %d",&x,&y);
a[x][y] = a[y][x] = 1;
}
}
void df_euler(int nod)
{
int i;viz[nod]=1;
v[p]=nod;
p++;
for (i=1;i<=n;i++)
if (a[nod][i])
if (!viz[i])
{
a[nod][i]=0;
a[i][nod]=0;
df_euler(i);
}
for (i=1;i<=n;i++)
if (a[nod][i])
{
a[nod][i]=0;
a[i][nod]=0;
df_euler(i);
}
}
int grad(int x)
{
int grad=0,i,j;
for (i=1;i<=n;i++)
{
grad+=a[i][x];
}
return grad;
}
int main()
{
citire();
int ok=1;
for (i=1;i<=n;i++)
if (grad(i)%2!=0) ok=0;
memset(viz,0,sizeof (viz));
df_euler(1);
if (ok==0) printf("-1");
else
for (i=0;i<p;i++)
printf("%d ",v[i]);
system("pause");
return 0;
}