Pagini recente » Cod sursa (job #1114942) | Cod sursa (job #973992) | Cod sursa (job #1103231) | Cod sursa (job #1234158) | Cod sursa (job #1364482)
#include<stdio.h>
struct muchie
{
int x,leg;
};
muchie a[1000002];
int n,m,t[100002],stiva[500003],z[500003],vf,x,y,i,k;
int main()
{
FILE *fin, *fout;
int rc;
fin=freopen("ciclueuler.in","r",stdin);
fout=freopen("ciclueuler.out","w",stdout);
rc=scanf("%i%i",&n,&m);
for (k=0,i=1;i<=m;i++)
{
rc=scanf("%i%i",&x,&y);
k++; a[k].x=y; a[k].leg=t[x]; t[x]=k;
k++; a[k].x=x; a[k].leg=t[y]; t[y]=k;
}
k=0;
stiva[1]=1; vf=1;
while (vf>0)
{
x=stiva[vf];
if (t[x]>0)
{
i=t[x];
y=a[i].x;
vf++;
stiva[vf]=y;
t[x]=a[i].leg;//practic se elimina muchia x y
i=t[y];
if (a[i].x==x)t[y]=a[i].leg;
else {
while (a[a[i].leg].x!=x)i=a[i].leg;
a[i].leg=a[a[i].leg].leg;
}
}
else
{
k++;
z[k]=stiva[vf];
vf--;
}
}
if (k!=m+1 || z[1]!=z[m+1]) { printf("-1");}
else for (i=1;i<=m;i++)printf("%i ",z[i]);
fclose(stdout);
fclose(stdin);
return 0;
}