Pagini recente » Cod sursa (job #3338602) | Cod sursa (job #3324334) | Cod sursa (job #1107424) | Cod sursa (job #3320096) | Cod sursa (job #3341369)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
const int NMAX = 1e5 + 5;
int grad[NMAX];
multiset <pair<int, int>> g[NMAX];
vector <int> ciclu;
void euler (int node) {
while (!g[node].empty()) {
auto it = g[node].begin();
int v = it->first, idx = it->second;
g[node].erase(it);
g[v].erase(g[v].find({node, idx}));
euler(v);
}
ciclu.pb(node);
}
int main() {
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
ios::sync_with_stdio(false), cin.tie(0);
int n, m;
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
g[x].insert({y, i});
grad[x]++, grad[y]++;
g[y].insert({x, i});
}
euler(1);
if (ciclu.size() == m + 1) for (int i = 0; i < ciclu.size() - 1; i++) cout << ciclu[i] << " ";
else cout << -1;
return 0;
}