Pagini recente » Cod sursa (job #1611286) | Cod sursa (job #2548125) | Cod sursa (job #2124401) | Cod sursa (job #1816873) | Cod sursa (job #1508337)
#include<algorithm>
#include<vector>
#include<stdio.h>
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define Nmax 101010
using namespace std;
vector<int> ret;
vector<pair<int,int> > g[Nmax];
int isD[Nmax*4];
int N,M,k,nrComp;
void df(int x){
for(int i=0;i<g[x].size();++i){
if(isD[g[x][i].sc]==0){
isD[g[x][i].sc]=1;
df(g[x][i].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;
}