Pagini recente » Cod sursa (job #635197) | Cod sursa (job #2083667) | Cod sursa (job #1390550) | Cod sursa (job #522983) | Cod sursa (job #2690577)
#include <bits/stdc++.h>
#define NMAX 100003
#define pb push_back
using namespace std;
vector<vector<int> >v(NMAX),d(NMAX);
vector<bool>viz(NMAX,0);
vector<int>ans;
void euler(int nod){
while(!v[nod].empty()){
int e=v[nod].back();
v[nod].pop_back();
int a=d[nod].back();
d[nod].pop_back();
if(!viz[e]){
viz[e]=1;
euler(a);
}
}
ans.pb(nod);
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
v[x].pb(i);
v[y].pb(i);
d[x].pb(y);
d[y].pb(x);
}
int ok=1;
for(int i=1;i<=n;i++)
if(v[i].size()%2==1)
ok=0;
if(!ok)
printf("%d",-1);
else{
euler(1);
for(int i=0;i<ans.size()-1;i++)
printf("%d ",ans[i]);
}
return 0;
}