Pagini recente » Cod sursa (job #715990) | Cod sursa (job #1635245) | Cod sursa (job #427933) | Cod sursa (job #1041476) | Cod sursa (job #432578)
Cod sursa(job #432578)
#include<stdio.h>
FILE *f,*g;
long t[4][5000000],c[2000000],fin[2000000],x,y,z,v[5000000],nr,numar,n,m,i;
void ciclu(long k)
{ long p=c[k]; t[3][p]=0; if(p%2==0) t[3][p-1]=0; else t[3][p+1]=0;
while(p>0)
{ if(t[3][p]) ciclu(t[1][p]);
if(p) p=t[2][p];
}
numar++; v[numar]=k;
}
int main()
{ f=fopen("ciclueuler.in","r"); g=fopen("ciclueuler.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=m;i++)
{ fscanf(f,"%ld%ld",&x,&y);
if(c[x]==0) { nr++; c[x]=nr; fin[x]=nr; t[1][nr]=y; t[3][nr]=1; }
else { nr++; t[2][fin[x]]=nr; t[1][nr]=y; fin[x]=nr; t[3][nr]=1; }
z=x; x=y; y=z;
if(c[x]==0) { nr++; c[x]=nr; fin[x]=nr; t[1][nr]=y; t[3][nr]=1;}
else { nr++; t[2][fin[x]]=nr; t[1][nr]=y; fin[x]=nr; t[3][nr]=1; }
}
ciclu(1);
if(numar-1==m) for(i=1;i<numar;i++) fprintf(g,"%ld ",v[i]);
else fprintf(g,"-1");
fclose(g);
return 0;
}