Pagini recente » Cod sursa (job #2923997) | Cod sursa (job #313652) | Cod sursa (job #2162240) | Cod sursa (job #2659206) | Cod sursa (job #2758204)
#include <bits/stdc++.h>
using namespace std;
const int MMAX = (int)5e5;
const int NMAX = (int)1e5;
vector<pair<int, int>> edges;
vector<int> adj[NMAX+1], lst;
bool vis[MMAX+1];
void dfs(int v) {
// cout << v << ' ';
while(!adj[v].empty()) {
int i = adj[v].back(), b;
adj[v].pop_back();
if(vis[i] == true) continue;
b = (edges[i].first == v?edges[i].second:edges[i].first);
vis[i] = true;
dfs(b);
}
lst.push_back(v);
}
int main() {
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
int n, m;
cin >> n >> m;
for(int i=0;i<m;i++) {
int x, y;
cin >> x >> y;
adj[x].push_back(i);
adj[y].push_back(i);
edges.push_back({x, y});
}
for(int i=1;i<=n;i++) {
if((int)adj[i].size()%2==1) {
cout << "-1\n";
return 0;
}
}
dfs(1);
lst.pop_back();
for(auto e:lst) cout << e << ' ';
cout << '\n';
}