Pagini recente » Cod sursa (job #1803753) | Cod sursa (job #469340) | Cod sursa (job #99930) | Cod sursa (job #2595562) | Cod sursa (job #2691307)
#include <bits/stdc++.h>
#define NMAX 500003
#define NMAX2 100003
#define pb push_back
using namespace std;
int n,m;
vector<vector<pair<int,int> > >v(NMAX2);
vector<int>ans;
vector<bool>vis(NMAX,0);
void dfs(int start){
while(!v[start].empty()){
int nod=v[start].back().first,edge=v[start].back().second;
v[start].pop_back();
if(!vis[edge]){
vis[edge]=1;
dfs(nod);
}
}
ans.pb(start);
}
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);
v[x].pb(make_pair(y,i));
v[y].pb(make_pair(x,i));
}
for(int i=1;i<=n;i++){
if(v[i].size()%2==1){
printf("-1");
return 0;
}
}
dfs(1);
for(int i=0;i<ans.size()-1;i++)
printf("%d ",ans[i]);
return 0;
}