Pagini recente » Cod sursa (job #3359865) | Cod sursa (job #3359359) | Cod sursa (job #3359412) | Monitorul de evaluare | Cod sursa (job #3359372)
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5;
vector<pair<int, int>>G[MAX + 3];
int main() {
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(false);
int N, M;
cin >> N >> M;
vector<int>v(M);
for(int i = 0; i < M; i++) {
int x, y; cin >> x >> y;
G[x].push_back({y, i});
G[y].push_back({x, i});
}
bool ok = 1;
for(int i = 1; i <= N; i++) {
ok &= (G[i].size() % 2 == 0);
}
vector<int>cycle;
vector<int>ans;
auto dfs = [&] (int nod, auto self) -> void{
while(!G[nod].empty()) {
auto [ne, idx] = G[nod].back();
G[nod].pop_back();
if(v[idx] == 0) {
v[idx] = 1;
self(ne, self);
}
}
ans.push_back(nod);
};
dfs(1, dfs);
for(int i = 0; i < M; i++) {
ok &= v[i];
}
if(ok == 0) cout << -1;
else {
ans.pop_back();
for(auto i : ans) cout << i << ' ';
}
}