Pagini recente » Cod sursa (job #787408) | Cod sursa (job #1455391) | Cod sursa (job #841393) | Cod sursa (job #2371442) | Cod sursa (job #1405651)
#include <cstdio>
#include <cstdlib>
FILE* in=fopen("ciclueuler.in","r");
FILE* out=fopen("ciclueuler.out","w");
const int Q=100007,W=500003;
int n,m;
int lst[Q],val[2*W],nxt[2*W],nr;
bool mers[2*W];
int rez[2*W];
void add(int a, int b)
{
val[++nr]=b;
nxt[nr]=lst[a];
lst[a]=nr;
}
//int stv[W];
int find;
void dfs(int x)
{
if(x==find)
{
rez[++rez[0]]=x;
return;
}
for(int p=lst[x]; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
dfs(val[p]);
for(; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
find=x;
dfs(val[p]);
}
}
rez[++rez[0]]=x;
return;
}
}
fprintf(out,"-1");
exit(0);
}
//int cont[Q];
int main()
{
fscanf(in,"%d%d",&n,&m);
int a,b;
for(int i=1; i<=m; i++)
{
fscanf(in,"%d%d",&a,&b);
// cont[a]++;
// cont[b]++;
add(a,b);
add(b,a);
}
// stv[++stv[0]]=1;
for(int p=lst[1]; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
find=1;
dfs(val[p]);
}
}
for(int i=1; i<=2*m; i+=2)
{
if(mers[i]==0)
{
fprintf(out,"-1");
return 0;
}
}
for(int i=1; i<=rez[0]; i++)
fprintf(out,"%d ",rez[i]);
return 0;
}