Pagini recente » Cod sursa (job #1197101) | Cod sursa (job #481735) | Cod sursa (job #765816) | Cod sursa (job #809237) | Cod sursa (job #796148)
Cod sursa(job #796148)
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define max_n 100005
#define max_m 500005
vector <int> V[max_n];
int n,m,a,b,i;
pair<int,int> Mu[max_m];
bool Nr[max_n];
bool Viz_m[max_m];
bool Viz[max_n];
int Rez[max_m],rez;
int It[max_n];
void df ( int nod )
{
for ( ; It[nod]<V[nod].size(); )
{
int M=V[nod][ It[nod] ];
It[nod]++;
if ( !Viz_m[ M ] )
{
Viz_m[ M ]=1;
df ( Mu [ M ].fi+ Mu [ M ].se- nod );
}
}
Rez[ ++rez ]=nod;
Viz[ nod ]=1;
}
int main()
{
freopen ("ciclueuler.in","r",stdin);
freopen ("ciclueuler.out","w",stdout);
scanf ("%d %d", &n, &m );
for ( i=1; i<=m; i++ )
{
scanf ("%d %d ", &a, &b );
Mu[i].fi=a;
Mu[i].se=b;
V[a].pb(i);
V[b].pb(i);
Nr[a]^=1;
Nr[b]^=1;
}
for ( i=1; i<=n; i++ )
if ( Nr[i] )
{
printf("-1\n");
return 0;
}
df(1);
for ( i=1; i<=n; i++ )
if ( !Viz[ i ] )
{
printf("-1\n");
return 0;
}
for ( i=1; i<rez; i++ )
printf("%d ",Rez[i]);
return 0;
}