Pagini recente » Cod sursa (job #1567059) | Cod sursa (job #2440351) | Cod sursa (job #2797031) | Cod sursa (job #1090133) | Cod sursa (job #316435)
Cod sursa(job #316435)
#include<stdio.h>
FILE *f,*g;
long c[100005],t[4][1000005],n,m,liber,i,x,y,fin[100111],aux,v[500111],nr;
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;
}