Pagini recente » Cod sursa (job #1652098) | Cod sursa (job #261814) | Cod sursa (job #1013979) | Cod sursa (job #453513) | Cod sursa (job #432499)
Cod sursa(job #432499)
#include<stdio.h>
FILE *f,*g;
long c[100005],t[4][1000099],n,m,liber,i,x,y,fin[100111],aux,v[700011],nr;
inline void euler(long k)
{ long p=c[k];
while(p)
{ if(t[3][p]) { t[3][p]=0; if(p%2==0) t[3][p-1]=0; else t[3][p+1]=0; euler(t[1][p]); }
p=t[2][p];
}
nr++; v[nr]=k;
}
int main()
{ f=fopen("ciclueuler.in","r"); g=fopen("ciclueuler.out","w");
fscanf(f,"%ld%ld",&n,&m);
liber=1; nr=0;
for(i=1;i<=m;i++)
{ fscanf(f,"%ld%d",&x,&y);
if(!c[x])
{ c[x]=liber; t[1][liber]=y; t[3][liber]=1; fin[x]=liber; liber++; }
else
{ t[2][fin[x]]=liber; t[1][liber]=y; t[3][liber]=1; fin[x]=liber; liber++; }
aux=x; x=y; y=aux;
if(!c[x])
{ c[x]=liber; t[1][liber]=y; t[3][liber]=1; fin[x]=liber; liber++; }
else
{ t[2][fin[x]]=liber; t[1][liber]=y; t[3][liber]=1; fin[x]=liber; liber++; }
}
euler(1);
if(nr==m+1) for(i=nr;i>=2;i--) fprintf(g,"%ld ",v[i]); else fprintf(g,"-1");
fclose(g);
return 0;
}