Pagini recente » Cod sursa (job #1554654) | Cod sursa (job #1362588) | Cod sursa (job #1558280) | Cod sursa (job #2468383) | Cod sursa (job #1132978)
#include <iostream>
#include <vector>
#include <utility>
#define F first
#define S second
using namespace std;
vector< vector< pair<int, pair<int, int> > > > v;
int ansPos = 0;
int ans[500000];
void f(int x) {
//cout<<x+1<<'\n';
for(int i = 0; i < v[x].size(); ++i) {
if(!v[x][i].S.S) {
v[x][i].S.S = 1;
v[v[x][i].F][v[x][i].S.F].S.S = 1;
f(v[x][i].F);
}
}
ans[ansPos] = x;
++ansPos;
}
int main() {
ios_base::sync_with_stdio(0);
int n,m;
cin>>n>>m;
v.resize(n);
for(int i = 0; i < m; ++i) {
int a,b;
cin>>a>>b;
--a,--b;
if(a == b) {
v[a].push_back(make_pair(b, make_pair(v[b].size()+1, 0)));
v[b].push_back(make_pair(a, make_pair(v[a].size()-1, 0)));
}
else {
v[a].push_back(make_pair(b, make_pair(v[b].size(), 0)));
v[b].push_back(make_pair(a, make_pair(v[a].size()-1, 0)));
}
}
/*
for(int i =0; i < n; ++i) {
for(int j = 0; j < v[i].size(); ++j) {
cout<<v[i][j].F+1<<' '<<v[i][j].S.F<<'*';
}
cout<<'\n';
}
*/
for(int i =0 ; i < n; ++i) {
if(v[i].size()&1) {
cout<<-1<<'\n';
return 0;
}
}
f(0);
for(int i = 0; i < ansPos; ++i) {
cout<<ans[i]+1<<' ';
}
cout<<'\n';
}