Pagini recente » Cod sursa (job #1162732) | Cod sursa (job #1012321) | Cod sursa (job #1944374) | Cod sursa (job #1149510) | Cod sursa (job #1508342)
#include<algorithm>
#include<vector>
#include<stdio.h>
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define Nmax 201010
using namespace std;
vector<int> ret;
vector<pair<int,int> > g[Nmax];
int isD[Nmax*5];
int N,M,k,nrComp;
void df(int x){
for(auto n : g[x]){
if(isD[n.sc]==0){
isD[n.sc]=1;
df(n.fs);
}
}
ret.pb(x);
}
int main(){
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=M;++i){
int x,y;
scanf("%d%d",&x,&y);
g[x].pb(mp(y,i));
g[y].pb(mp(x,i));
}
int ok=1;
for(int i=1;i<=N;++i){
if(g[i].size() % 2 == 1){
ok=0;
}
}
df(1);
if(ret.size() != M+1)
ok=0;
if(ok==0){
printf("-1");
return 0;
}
for(int i=0;i<M;++i){
printf("%d ",ret[i]);
}
return 0;
}