Pagini recente » Cod sursa (job #2235168) | Cod sursa (job #2235285) | Cod sursa (job #2919987) | Monitorul de evaluare | Cod sursa (job #3283072)
#include <bits/stdc++.h>
using namespace std;
#define INFILE "ciclueuler.in"
#define OUTFILE "ciclueuler.out"
const int N_MAX = 1e5;
const int M_MAX = 5e5;
int nodes, edges;
bool visited[N_MAX + 1];
vector<pair<int, int> > adj[N_MAX + 1];
vector<int> ans;
void dfs(int node){
while(!adj[node].empty()){
auto to = adj[node].back();
adj[node].pop_back();
if(!visited[to.second]){
visited[to.second];
dfs(to.first);
}
}
ans.push_back(node);
}
void solve(){
cin >> nodes >> edges;
for(int i = 0; i < edges; ++i){
int node1, node2; cin >> node1 >> node2;
adj[node1].push_back(make_pair(node2, i));
adj[node2].push_back(make_pair(node1, i));
}
for(int i = 1; i <= nodes; ++i){
if(adj[i].size() % 2 == 1) {
cout << -1 << '\n';
return;
}
}
dfs(1);
ans.pop_back();
for(auto &it : ans){
cout << it << " ";
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
solve();
return 0;
}