Pagini recente » Cod sursa (job #949499) | Cod sursa (job #1447492) | Cod sursa (job #2672222) | Cod sursa (job #1774533) | Cod sursa (job #3302334)
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<pair<int, int>> v[100001];
bool mt[500001];
stack<int> ans;
void euler() {
stack<int> s;
s.push(1);
while (!s.empty()) {
int node = s.top();
if (!v[node].empty()) {
pair<int, int> vn = v[node].back();
v[node].pop_back();
if (mt[vn.second] == 0) {
mt[vn.second] = 1;
s.push(vn.first);
}
} else {
ans.push(node);
s.pop();
}
}
}
int main() {
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
cin >> n >> m;
for (int i = 1; i <= m; ++i) {
int x, y;
cin >> x >> y;
v[x].push_back({y, i});
v[y].push_back({x, i});
}
for (int i = 1; i <= n; ++i) {
if (v[i].size() % 2 != 0) {
cout << -1;
return 0;
}
}
euler();
while (ans.size() != 1) {
cout << ans.top() << " ";
ans.pop();
}
}